密码工程-小素数
0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 1. 参考《密码工程》p107伪代码基于Eratosthenes算法实现 int SmallPrimeList(int n, int *plist, int *len), 其中plist返回素数列表,len返回列表长度(10 ’) 2 写出测试代码,至少包括 n=2, n=你的四位学号,n>2^20次方的测试代码,提交代码和运行结果截图(5)
输入2

输入学号后四位1220
求得最大值为1220时有199个素数,即长度len为199
输入大于2^20的数
此时素数列表的长度len是82025,求出的最大素数是1048577
代码如下
/* * 筛选法计算小于100000的素数 * 筛选法求最小的素数序列,原本是不朽的数学家们手工计算的方法, */ #include <iostream> #include <cmath> using namespace std; const int MAXN = 2000000; bool sieveflag[2000000 + 1] = { false, false, true }; void esieve(bool sflag[], int n) { // 初始化 for (int i = 3; i <= n; i++) { sflag[i++] = true; sflag[i] = false; } // 筛选 long long int max = sqrt(n); for (int i = 3; i <= max; i++) { if (sflag[i]) { for (int j = i + i; j <= n; j += i) sflag[j] = false; } } } int main() { int n; printf("请输入最大值n\n"); scanf_s("%d", &n); esieve(sieveflag, n); int i; int num; for (i = 2, num = 0; i <= n; i++) { if (sieveflag[i]) { ++num; //cout << num << ":" << i << endl; } } cout << num << ":" << i << endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通