我想找到最大的素数因子600851475143,我写了一个代码,可以计算13195或更少数字的素因子。但我的代码无法计算600851475143这个数字最大的素数因素为什么呢?
这是我的代码:
#include <stdio.h>
#include <math.h>
int main( ){
int n, a, b;
printf( "enter a number=> " );
scanf( "%d", &n );
for ( a = n; a >= 2; a-- ){
for ( b = 2; b <= a; b++ ){
if ( a % b == 0 ){break;}
else if ( b == a - 1 ){
if( n % a == 0 ){
printf("here is the largest prime number => %d\n", a);
return 0;
}
}
}
}
return 0;
}
答案 0 :(得分:1)
此处600851475143
太大,无法容纳int
数据类型。
使用long long
代替int
。因此,请将代码中的以下行更改为:
long long n, a, b;
scanf( "%lld", &n );
printf("here is the largest prime number => %lld\n", a);
查看链接以获取详细信息:Range of values in C Int and Long 32 - 64 bits
答案 1 :(得分:0)
该值大于int数据类型的最大值。您可能需要64位INT值。
Are types like uint32, int32, uint64, int64 defined in any stdlib header?