生成非常大的素数C ++

时间:2018-10-01 16:32:57

标签: c++ loops primes

这是我编写的简单代码(我知道我可以对其进行优化,但是我正在做一些测试并发现了一个问题):

#include <iostream>
using namespace std;
int main() {
    int n;
    int d=3;
    cout<<"insert a number n: ";
    cin>>n;
    while (d<n){
        if ((n%d)!=0) {
            d=d+2;
        }
        else
        n=n+1;
    }
    cout<<"the number: "<<n<<" is prime"<<endl;
    system ("PAUSE");
    return 0;
}

基本上,它似乎适用于“足够小的”数字(即小于“ 2147483647”的数字),这是输出中发生的情况的屏幕截图: enter image description here

我需要生成约一千个数字(或者可能更多,但我们在500-1000范围内的某个数字)的质数 C ++可以处理吗? (同样,我也需要程序像我的代码中那样为我循环)关于如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

您应该使用“ long”或“ long long”,也可以在更大范围内使用“ unsigned”,因为int也使用负数,您不需要获取素数。