筛法

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. cin>>n;
  7. int a[n];
  8. for(int i=1;i<n+1;i++)//把全部数都输入到数组中
  9. {
  10. a[i]=i;
  11. }
  12. for(int j=2;j<=n;j++)//从2开始,因为素数最小是2,循环n以内的所有的数
  13. {
  14. if(a[j]!=0)//判断这个数是不是一个素数的整数倍
  15. {
  16. for(int k=2;j*k<=n;k++)
  17. {
  18. a[j*k]=0;//判断这个数是不是一个素数的整数倍,如果是,变成0
  19. }
  20. cout<<a[j]<<endl;
  21. }//即2是素数,然后把2的倍数标为0,因为他们不是素数,继续向后循环,找到每一个素数;
  22. }
  23. return 0;
  24. }

一般法

  1. #include<iostream>
  2. using namespace std;
  3. bool isprime(int i)
  4. {
  5. bool boll=false;
  6. for(int j=2;j*j<=i;j++)
  7. {
  8. if(i%j==0)
  9. {
  10. return boll;
  11. break;
  12. }
  13. }
  14. boll=true;
  15. return boll;
  16. }
  17. int main()
  18. {
  19. int n;
  20. cin>>n;
  21. bool ball=false;
  22. for(int i=2;i<=n;i++)
  23. {
  24. if(isprime(i))
  25. cout<<i<<endl;
  26. }
  27. return 0;
  28. }
点赞(0)
 

0 分

0 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论