这是我编写的简单代码(我知道我可以对其进行优化,但是我正在做一些测试并发现了一个问题):
#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 ++可以处理吗? (同样,我也需要程序像我的代码中那样为我循环)关于如何解决此问题的任何建议?
答案 0 :(得分:1)
您应该使用“ long”或“ long long”,也可以在更大范围内使用“ unsigned”,因为int也使用负数,您不需要获取素数。