发布网友 发布时间:2022-04-25 07:12
共5个回答
热心网友 时间:2023-11-06 01:41
楼主你好。
代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
unsigned int getNum(char* str){//从字符串中提取出unsigned int数据。
unsigned int num=0;
int i, len=strlen(str);
for(i=0;i<len;i++){
if(str[i]>='0'&&str[i]<='9'){
num*=10;
num+=str[i]-'0';
}
}
return num;
}
unsigned int getMaxFactor(unsigned int num){//获取最大因子
unsigned int i;
for(i=2;i<num;i++){//要是追求效率,这里的上限其实可以用num/2甚至sqrt(num)代替,下面也要进行相应修改。
if(num%i==0)break;
}
if(i==num)
return num;
return num/i;
}
void main(){
char str[100]={0};
unsigned int nums[100]={0};//100行,由于题目要求统一输入然后统一输出,因此需要一个缓冲区存储输出,其实这里可以动态分配空间,也可以重定向到文件中,我的unsigned int nums[100]只是一个例子。
int i=0,count;
while(1){
gets(str);
if(strlen(str)==0)break;
nums[i++]=getMaxFactor(getNum(str));
}
count=i;
for(i=0;i<count;i++){
printf("%d\n",nums[i]);
}
}
运行结果:
热心网友 时间:2023-11-28 02:39
楼主你好。
代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
unsigned int getNum(char* str){//从字符串中提取出unsigned int数据。
unsigned int num=0;
int i, len=strlen(str);
for(i=0;i<len;i++){
if(str[i]>='0'&&str[i]<='9'){
num*=10;
num+=str[i]-'0';
}
}
return num;
}
unsigned int getMaxFactor(unsigned int num){//获取最大因子
unsigned int i;
for(i=2;i<num;i++){//要是追求效率,这里的上限其实可以用num/2甚至sqrt(num)代替,下面也要进行相应修改。
if(num%i==0)break;
}
if(i==num)
return num;
return num/i;
}
void main(){
char str[100]={0};
unsigned int nums[100]={0};//100行,由于题目要求统一输入然后统一输出,因此需要一个缓冲区存储输出,其实这里可以动态分配空间,也可以重定向到文件中,我的unsigned int nums[100]只是一个例子。
int i=0,count;
while(1){
gets(str);
if(strlen(str)==0)break;
nums[i++]=getMaxFactor(getNum(str));
}
count=i;
for(i=0;i<count;i++){
printf("%d\n",nums[i]);
}
}
运行结果:
热心网友 时间:2023-11-06 01:41
楼主你好。
代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
unsigned int getNum(char* str){//从字符串中提取出unsigned int数据。
unsigned int num=0;
int i, len=strlen(str);
for(i=0;i<len;i++){
if(str[i]>='0'&&str[i]<='9'){
num*=10;
num+=str[i]-'0';
}
}
return num;
}
unsigned int getMaxFactor(unsigned int num){//获取最大因子
unsigned int i;
for(i=2;i<num;i++){//要是追求效率,这里的上限其实可以用num/2甚至sqrt(num)代替,下面也要进行相应修改。
if(num%i==0)break;
}
if(i==num)
return num;
return num/i;
}
void main(){
char str[100]={0};
unsigned int nums[100]={0};//100行,由于题目要求统一输入然后统一输出,因此需要一个缓冲区存储输出,其实这里可以动态分配空间,也可以重定向到文件中,我的unsigned int nums[100]只是一个例子。
int i=0,count;
while(1){
gets(str);
if(strlen(str)==0)break;
nums[i++]=getMaxFactor(getNum(str));
}
count=i;
for(i=0;i<count;i++){
printf("%d\n",nums[i]);
}
}
运行结果:
热心网友 时间:2023-11-06 01:41
#include <stdio.h>热心网友 时间:2023-11-06 01:42
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char s[120];
gets(s);
while(strlen(s)!=0){
//printf("%s\n",s);
//scanf("%s\n",s);
int sum=0,f=1;
for(int i=0;i<strlen(s);i++){
if(isdigit(s[i]))
sum=sum*10+s[i]-'0';
}
for(int i=sum-1;i>1;i--){
if(sum%i==0){
f=0;
printf("%d\n",i);
break;
}
}
if(f)
printf("%d\n",sum);
gets(s);
}
}
emmm,这样也可以,不过个人觉得还是
zhangchaoyiay
的更简单一点。。。
热心网友 时间:2023-11-06 01:42
#include<stdio.h>热心网友 时间:2023-11-06 01:43
鸟语。。。热心网友 时间:2023-11-06 01:42
#include <stdio.h>热心网友 时间:2023-11-06 01:41
楼主你好。
代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
unsigned int getNum(char* str){//从字符串中提取出unsigned int数据。
unsigned int num=0;
int i, len=strlen(str);
for(i=0;i<len;i++){
if(str[i]>='0'&&str[i]<='9'){
num*=10;
num+=str[i]-'0';
}
}
return num;
}
unsigned int getMaxFactor(unsigned int num){//获取最大因子
unsigned int i;
for(i=2;i<num;i++){//要是追求效率,这里的上限其实可以用num/2甚至sqrt(num)代替,下面也要进行相应修改。
if(num%i==0)break;
}
if(i==num)
return num;
return num/i;
}
void main(){
char str[100]={0};
unsigned int nums[100]={0};//100行,由于题目要求统一输入然后统一输出,因此需要一个缓冲区存储输出,其实这里可以动态分配空间,也可以重定向到文件中,我的unsigned int nums[100]只是一个例子。
int i=0,count;
while(1){
gets(str);
if(strlen(str)==0)break;
nums[i++]=getMaxFactor(getNum(str));
}
count=i;
for(i=0;i<count;i++){
printf("%d\n",nums[i]);
}
}
运行结果:
热心网友 时间:2023-11-06 01:42
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char s[120];
gets(s);
while(strlen(s)!=0){
//printf("%s\n",s);
//scanf("%s\n",s);
int sum=0,f=1;
for(int i=0;i<strlen(s);i++){
if(isdigit(s[i]))
sum=sum*10+s[i]-'0';
}
for(int i=sum-1;i>1;i--){
if(sum%i==0){
f=0;
printf("%d\n",i);
break;
}
}
if(f)
printf("%d\n",sum);
gets(s);
}
}
emmm,这样也可以,不过个人觉得还是
zhangchaoyiay
的更简单一点。。。
热心网友 时间:2023-11-06 01:41
#include <stdio.h>热心网友 时间:2023-11-06 01:43
#include<stdio.h>热心网友 时间:2023-11-28 02:39
#include <stdio.h>热心网友 时间:2023-11-28 02:40
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char s[120];
gets(s);
while(strlen(s)!=0){
//printf("%s\n",s);
//scanf("%s\n",s);
int sum=0,f=1;
for(int i=0;i<strlen(s);i++){
if(isdigit(s[i]))
sum=sum*10+s[i]-'0';
}
for(int i=sum-1;i>1;i--){
if(sum%i==0){
f=0;
printf("%d\n",i);
break;
}
}
if(f)
printf("%d\n",sum);
gets(s);
}
}
emmm,这样也可以,不过个人觉得还是
zhangchaoyiay
的更简单一点。。。
热心网友 时间:2023-11-28 02:40
#include<stdio.h>热心网友 时间:2023-11-28 02:41
鸟语。。。热心网友 时间:2023-11-06 01:42
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char s[120];
gets(s);
while(strlen(s)!=0){
//printf("%s\n",s);
//scanf("%s\n",s);
int sum=0,f=1;
for(int i=0;i<strlen(s);i++){
if(isdigit(s[i]))
sum=sum*10+s[i]-'0';
}
for(int i=sum-1;i>1;i--){
if(sum%i==0){
f=0;
printf("%d\n",i);
break;
}
}
if(f)
printf("%d\n",sum);
gets(s);
}
}
emmm,这样也可以,不过个人觉得还是
zhangchaoyiay
的更简单一点。。。
热心网友 时间:2023-11-06 01:43
鸟语。。。热心网友 时间:2023-11-06 01:42
#include<stdio.h>热心网友 时间:2023-11-06 01:43
鸟语。。。