首页 > 试题广场 >

大整数的因子

[编程题]大整数的因子
  • 热度指数:11897 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

输入描述:
若干个非负整数c,c的位数<=30
每行一个c


输出描述:
每一个c的结果占一行
1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
2) 若没有这样的k则输出"none"

注意整数溢出问题
不要对-1进行计算
示例1

输入

30
72
13
-1

输出

2 3 5 6
2 3 4 6 8 9
none
#include <stdio.h>
#define N 31
int main(){
    char a[N], num = 0, flag = 0;
    scanf("%s", a);
    for (int i = 2; i <= 9; i ++) {
        num = 0;
        for (int j = 0; a[j]!='\0'; j ++) {
            num = num*10+a[j]-'0';
            num %= i;
        }
        if (num==0) {
            flag = 1;
            printf("%d ", i);
        }
    }
    if (flag==0) {
        printf("none");
    }
    return 0;
}

发表于 2023-02-15 14:16:06 回复(0)
狗啊,说好了c不超过三十位,结果测试里面有个31位的....
发表于 2023-01-28 10:29:59 回复(0)
#include<stdio.h>
#include<string.h>


int main()
{
	int i,j,sum,k;
	char ch[13];
	while(~scanf("%s",ch))
	{
		if(strcmp(ch,"-1")==0) 
			return 0;

		k=0;
		for(j=2;j<=9;j++)
		{
			sum=ch[0]-'0';
			for(i=1;i<strlen(ch);i++)
				sum=(sum*10+(ch[i]-'0'))%j;
			if(sum==0)
			{
				k++;
				printf("%d ",j);
			}
		}
		if(k==0) printf("none\n");
		else printf("\n");
	}
	return 0;
}

发表于 2022-03-23 18:33:22 回复(0)

问题信息

难度:
4条回答 10003浏览

热门推荐

通过挑战的用户

查看代码
大整数的因子