当前位置:   article > 正文

如何判断一个素数(反正没人看,随便写写)_输入n个不大于100000的正整数,要求全部储存在数组中,去除掉不是质数的数字,依

输入n个不大于100000的正整数,要求全部储存在数组中,去除掉不是质数的数字,依

什么是素数(该不会有人连这都不知道吧):素数就是只能被自己和1整除的数(1不是质数哦)。

所以就只需要保证n除以2到n-1没有余数就行了

  1. bool isprime(int n)
  2. {
  3. cin>>n;//n是整数
  4. if(n<2)//0和1都不是质数所以要用这个条件来排除
  5. {
  6. return false;
  7. }
  8. for(int i=2;i<=n-1;i++)
  9. {
  10. if(n%i==0)
  11. return false;
  12. }
  13. return ture;
  14. }

举一个例子:

题目描述

输入n个不大于100000的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。

输入格式

第一行输入一个正整数 n,表示整数个数。

第二行输入 n 个正整数 ai​,以空格隔开。

输出格式

输出一行,依次输出 ai​ 中剩余的质数,以空格隔开。

输入输出样例

输入

5
3 4 5 6 7

输出 

3 5 7

说明/提示

数据保证,1≤n≤100,1≤ai​≤100000。

  1. #include<iostream>
  2. using namespace std;
  3. bool isprime(int n)
  4. {
  5. if(n<2)
  6. {
  7. return false;
  8. }
  9. for(int i=2;i<n-1;i++)
  10. {
  11. if(n%i==0)
  12. return false;
  13. }
  14. return true;
  15. }
  16. int n=0,a[100000]={0};
  17. int main()
  18. {
  19. cin>>n;
  20. for(int i=0;i<n;i++)
  21. {
  22. cin>>a[i];
  23. }
  24. for(int i=0;i<n;i++)
  25. {
  26. if(isprime(a[i])==true)
  27. cout<<a[i]<<' ';
  28. }
  29. return 0;
  30. }

运行结果如下:

当然了还是可以优化以下的

想一下如果一个数的不是质数的话,那么他的平方根的左边和右边一定各有一个因数(这就是数学知识了),比如6的两个因数是2和3,这两个因数就在根号下6的左右两边。

优化后的代码如下:

  1. bool isprime(int n)
  2. {
  3. double k=sqrt(n);
  4. for(int i=0;i<=k;i++)
  5. {
  6. if(n%i==0)
  7. return false;
  8. }
  9. return true;
  10. }

如果按照上面的例子,完整代码如下

  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int n=0,a[100000]={0};
  5. bool isprime(int n)
  6. {
  7. if(n<2)
  8. return false;
  9. for(int i=2;i<=sqrt(n);i++)
  10. {
  11. if(n%i==0)
  12. return false;
  13. }
  14. return true;
  15. }
  16. int main()
  17. {
  18. cin>>n;
  19. for(int i=0;i<n;i++)
  20. {
  21. cin>>a[i];
  22. }
  23. for(int i=0;i<n;i++)
  24. {
  25. if(isprime(a[i])==true)
  26. cout<<a[i]<<' ';
  27. }
  28. return 0;
  29. }

运行结果如下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/328748?site
推荐阅读
相关标签
  

闽ICP备14008679号