查找给定数字是否为素数

时间:2014-08-05 18:30:09

标签: c primes

我试图找出 5915587277 是否为素数。 这个数字实际上是素数,我希望从我的程序中得到这个。 当我运行这个程序时,它表示它不是素数,它的除数是199。

#include<stdio.h>

int main()
{
    long n = 0;
    long i = 0;
    printf("Enter Number: ");
    scanf("%ld", &n);
    long m = n/2;

    if(n%2 == 0)
    {
        printf("Not Prime");
        return 0;
    }

    for( i = 3; i <= m; i++)
    {
        if(n%i == 0)
        {
            printf("Not Prime: %d\n", i);
            return 0;
        }

    }

    printf("Prime");
    return 0;
}

我不确定为什么这段代码会将此号码打印为非素数。

2 个答案:

答案 0 :(得分:9)

你超过最长值。请参阅Data type limits

答案 1 :(得分:0)

您使用的是哪种类型的编译器?如果它支持64位数,那么你可以这样做。另一件事是使用无符号长整数来存储最大值。你的代码很好,但你需要刷新你的知识,最大值可以存储特定的数据类型。     希望这个答案对你有所帮助。