当前位置:   article > 正文

C#编程实现判断素数的方法_c#判断素数

c#判断素数

第一种方法,根据素数的定义判断,代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Numerics;
  7. namespace fastPrim
  8. {
  9. class Program
  10. {
  11. /// <summary>
  12. /// 判断素数
  13. /// </summary>
  14. /// <param name="num"></param>
  15. /// <returns></returns>
  16. static bool isPrim(int num)
  17. {
  18. for(int i=2;i<num-1;i++)
  19. {
  20. if (num % i == 0)
  21. {
  22. return false;
  23. }
  24. }
  25. Console.WriteLine(num.ToString() + "是素数");
  26. return true;
  27. }
  28. static void Main(string[] args)
  29. {
  30. //判断100以内的素数
  31. int n = 100;
  32. for (int i = 2; i < n+1; i++)
  33. {
  34. isPrim(i);
  35. }
  36. Console.Read();
  37. }
  38. }
  39. }

根据素数的定义,即素数是只能被1和本身整除的数字,上面的isPrim函数就是根据这点进行编码实现的。

第二种方法,是对第一种判断素数方法的优化,原理是:如果一个数n不能被i整除,那他也不能被n/i整除,所以我们只需要判断n能不能被自己的平方根以内的数整除即可。

  1. /// <summary>
  2. /// 判断素数的改良方法
  3. /// </summary>
  4. /// <param name="num"></param>
  5. /// <returns></returns>
  6. static bool isPrimFast(int num)
  7. {
  8. for (int i = 2; i <= Math.Sqrt(num); i++)
  9. {
  10. if (num % i == 0)
  11. {
  12. return false;
  13. }
  14. }
  15. Console.WriteLine(num.ToString() + "是素数");
  16. return true;
  17. }

从上面的代码可以看出,第一种判断素数方法是线性时间复杂度,而第二种方法是平方根时间复杂度,比较节省时间。

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

闽ICP备14008679号