思路借鉴了排名第一的火影哥
大整数的因子
https://www.nowcoder.com/practice/3d6cee12fbf54ea99bb165cbaba5823d
#include <stdio.h>
#include<string.h>
int mochu(int a[],int len,int i){//判断能否整除
int sum=0;
for(int j=0;j<len;j++){
sum=(sum*10+a[j])%i;//牛逼
}
if(sum==0)return 1;
else return 0;
}
int main(){
char c[31];int a[30],tap;
while(scanf("%s",c)!=EOF){
if(strcmp(c,"-1")==0){
return 0;
}
tap=0;//tap记录输出了几个
for(int i=0;i<strlen(c);i++)//把字符转化位整数
a[i]=c[i]-'0';
int i;
for(i=2;i<=9;i++){//先输出第一个满足条件的i
if(mochu(a,strlen(c),i)){
printf("%d",i);
tap++;
break;
}
}
for(i++;i<=9;i++){//剩下的再输出,可以保证最后一位后面没有空格
if(mochu(a,strlen(c),i)){
printf(" %d",i);
tap++;
}
}
if(tap==0)//一个没输出就none
printf("none");
printf("\n");
}
return 0;
}
查看6道真题和解析
