首页 > 解决方案 > 生成非常大的素数 C++

问题描述

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

#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”的数字)这是输出中发生的情况的屏幕截图: 在此处输入图像描述

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

标签: c++loopsprimes

解决方案


您应该使用 'long' 或 'long long' 也可以使用 'unsigned' 以获得更大的范围,因为 int 也使用负数,您不需要获得素数。


推荐阅读