命令int无法计算大数?

时间:2014-04-24 16:09:29

标签: c int

我想找到最大的素数因子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;
}

2 个答案:

答案 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?