解题思路:
不需要枚举法求素数,前期还可以理解,如果在后期会是一个数量级别的递增,肯定会超时的,按照排除的原则,如果是素数,那么他的整数倍的数肯定排除在外,按照这个原则操作即可
注意事项:
主要下标的操作
参考代码:
#include <iostream> #include <string> #include <cmath> #include <cstring> using namespace std; int main() { int n; cin>>n; bool* ans=new bool[n]; memset(ans,true,sizeof(bool)*n);// ans[0]=false; ans[1]=false; for(int i=2;i<n;i++){ if(ans[i]){ for(int j=i*2;j<n;j+=i){//倍数取整 ans[j]=false; } } } int col = 0; for(int i=0;i<n;i++){ if(ans[i]){ cout<<i<<" "; } } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1314 |
简单的a+b (C语言代码)浏览:560 |
【矩阵】 (C++代码)浏览:999 |
IP判断 (C语言描述,蓝桥杯)浏览:1118 |
Tom数 (C语言代码)浏览:517 |
局部变量作函数返回值的问题浏览:1028 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:627 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:742 |
C二级辅导-等差数列 (C语言代码)浏览:806 |
妹子杀手的故事 (C语言代码)浏览:1153 |