描述
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
输入
一个非负整数c,c的位数<=30。
输出
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
int yin(int a[],int n,int len) //利用数组存储大整数
{
int temp,flag=0;
temp=a[0]%n; //temp表示每次除后剩下的数
for(int i=1;i<len;i++)
{
temp=(temp*10+a[i])%n;
}
if(temp==0)
{
flag=1;
}
return flag;
}
int main()
{
int a[31];
for(int i=0;i<31;i++)
{
a[i]=0;
}
char ch;
int len=0;
while((ch=getchar())!='\n') //利用字符串读取转换
{
a[len++]=ch-'0';
}
yin(a,4,len);
int flag=1;
for(int i=2;i<=9;i++)
{
if(yin(a,i,len))
{
printf("%d ",i); //如果是,就打印,并且利用flag表示已经找到满足条件的数
flag=0;
}
}
if(flag)
printf("none");
}