c++ - 生成非常大的素数 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++ 可以处理它吗?(我也需要程序像我的代码一样为我循环)关于如何解决这个问题的任何建议?
解决方案
您应该使用 'long' 或 'long long' 也可以使用 'unsigned' 以获得更大的范围,因为 int 也使用负数,您不需要获得素数。
推荐阅读
- java - 如何使用 Visual Studio Code 在 Java 中导入内容
- angular - 出现错误:类型“教师 []”不可分配给类型“教师”
- scala - 如何使用“未找到类型”修复 Scala 错误
- ios - 有没有一种方法可以在不使用 Xcode 11 在 iPhone 上构建 UI 的情况下测量 Swift 的性能?
- typescript - 如何防止 TypeScript 中出现意外的类型兼容性
- javascript - 如何使用 momentjs 获得独特的国家时区?
- ms-access - Microsoft Access 参照完整性错误消息,但主键值匹配
- javascript - 减少后查找数组中的字符总数
- python - Python函数从字符串列表中的字符串项中删除一些内容
- javascript - 查找文本(子文本节点)并将其包装在一个段落中