大整數的因子(利用求餘)

題目:

已知正整數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");
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章