对于大数因子的计算实际上很简单,就是从最高位开始算起,
假设是一个三位数就是最高位取余数*10+下一位整体取余后再加上下一位在取余后判断是否此时的余数为0,为0就说明是它的因子;
在这个过程中我们都知道一个数是否是另一个数的因子,我们看的是最后是余数,余数为0就说明是他的因子,所以在每一次计算后扔掉整数只需要保留余数就行
实际上就是除法的实现过程;自己模拟一遍应该就可以理解;
AC代码:
#include<stdio.h>
#include<string.h>
char str[100];
int mod(int u)
{
int len=strlen(str);
int ans=0;
for(int i=0; i<len; i++)
ans=(ans*10+str[i]-'0')%u;
return ans;
}
int main()
{
while(scanf("%s", str)!=EOF)
{
int flag=0;
for(int i=2; i<=9; i++)
{
if(!mod(i))
{
if(flag==0)
{
flag=1;
printf("%d ", i);
}
else
printf("%d ", i);
}
}
if(flag==0)
printf("none\n");
}
return 0;
}