題目:
已知正整數k滿足2<=k<=9,現給出長度最大爲30位的十進制非負整數c,求所有能整除c的k。
Input
一個非負整數c,c的位數<=30。
Output
若存在滿足 c%k == 0 的k,從小到大輸出所有這樣的k,相鄰兩個數之間用單個空格隔開;若沒有這樣的k,則輸出"none"。
Sample Input
30
Sample Output
2 3 5 6
解題思路:大數求因數也就是利用大數的每一位對因數求餘然後乘10加上下一個餘數,直到最後一位得到的餘數爲0;
程序代碼:
#include<stdio.h>
#include<string.h>
int a[50];
char s[50];
int main()
{
int i,j,k,m,n,t,flag;
while(scanf("%s",s)!=EOF)
{
m=strlen(s);
flag=0;
for(i=2;i<=9;i++)
{
t=0;
for(j=0;j<m;j++)
{
t=(t*10+s[j]-'0')%i;
}
if(t==0)
{
flag=1;
printf("%d ",i);
}
}
if(flag==0)
printf("none");
printf("\n");
}
}