当前位置:   article > 正文

C语言之求1到n个数字之间所有的素数(三种写法)

C语言之求1到n个数字之间所有的素数(三种写法)

 如果不知道如何判断素数,先看这篇文章https://blog.csdn.net/yzb564/article/details/135224854?spm=1001.2014.3001.5501

求1到n个数字之间所有的素数,并全部输出

代码一

  1. #include <stdio.h>
  2. //求1到n个数字之间所有的素数
  3. int main(void)
  4. {
  5. int n, j, i;
  6. scanf_s("%d", &n);
  7. for (i = 2; i < n; i++)
  8. {
  9. //判断i是否为素数,是输出,不是不输出
  10. for (j = 2; j < i; j++)
  11. {
  12. if (i % j == 0)
  13. break;
  14. }
  15. if (j == i)
  16. printf("%d\n",i);
  17. }
  18. return 0;
  19. }

缺点:

         只用main函数实现,有局限性:

                 1.代码的重复利用率不高

                 2.代码不够简单明了,不易理解

代码二

  1. #include <stdio.h>
  2. //本函数功能是:判断m是否是素数,是返回true,不是返回false
  3. bool is_prime(int m)
  4. {
  5. int i;
  6. for (i = 2; i < m; i++)
  7. {
  8. if (m % i == 0)
  9. break;
  10. }
  11. if (i == m)
  12. return true;
  13. else
  14. return false;
  15. }
  16. int main(void)
  17. {
  18. int n,i,j;
  19. scanf_s("%d", &n);
  20. for (i = 2; i <= n; i++)
  21. {
  22. if(is_prime(i))
  23. printf("%d\n",i);
  24. }
  25. return 0;
  26. }

优点:比代码一更简洁更容易理解,可重复利用率更高

缺点:可重复利用率还不是非常高

代码三

用两个函数来实现求1到n个数字之间所以的素数,并将其输出

比代码二 代码量更少,可重复利用率更高

  1. #include <stdio.h>
  2. //本函数功能是:判断m是否是素数,是返回true,不是返回false
  3. bool is_prime(int m)
  4. {
  5. int i;
  6. for (i = 2; i < m; i++)
  7. {
  8. if (m % i == 0)
  9. break;
  10. }
  11. if (i == m)
  12. return true;
  13. else
  14. return false;
  15. }
  16. //本函数功能是把1到n之间所有的素数在显示器上输出
  17. void print_1(int n)
  18. {
  19. int i;
  20. for (i = 2; i <= n; i++)
  21. {
  22. if (is_prime(i))
  23. printf("%d\n", i);
  24. }
  25. }
  26. int main(void)
  27. {
  28. int n,i;
  29. scanf_s("%d", &n);
  30. print_1(n);
  31. return 0;
  32. }

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

闽ICP备14008679号