码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C# 查找[m,n]范围内的所有素数


    1. static int[] FindPrime(int m, int n)
    2. {
    3. if (m < 2 || n < m)
    4. return new int[0];
    5. List<int> result = new List<int>(n - m + 1);
    6. int i, j, t;
    7. // 如果m为偶数则加一,因为偶数不可能为素数(除去2)
    8. if ((m & 1) == 0)
    9. {
    10. // 如果为2则需要添加返回结果
    11. if (m == 2)
    12. result.Add(m);
    13. ++m;
    14. }
    15. bool status = true;
    16. // 从奇数开始遍历,每次加2,保证每次判断的数都是奇数
    17. for (i = m; i <= n; i += 2)
    18. {
    19. // 开根号的原因:两个数的乘积为i,只需要判断到根号i即可,不需要判断完,完全没得必要
    20. t = (int)Math.Sqrt(i);
    21. status = true;
    22. /* 证明:
    23. * 可以将其表示为 (2k + 1) * n,其中 n 是另一个数;
    24. * 展开乘法得到:(2k + 1) * n = 2kn + n = 2kn + n;
    25. * 可以看到,无论 n 是奇数还是偶数,2kn 部分一定是偶数,而 n 部分保持不变。偶数加上一个奇数仍然是奇数。因此,奇数的乘积一定是奇数。
    26. * 对于任意给定的奇数与其他数相乘,乘积一定是奇数。这是奇数性质的一个特例。
    27. */
    28. // 因此这里判断从奇数3开始,每次都加2,只需要判断这个奇数能否被另外一个奇数整除,如果不能被整除则为素数
    29. for (j = 3; j <= t; j += 2)
    30. {
    31. // 是否能被整除,如果是则不是素数
    32. if (i % j == 0)
    33. {
    34. status = false;
    35. break;
    36. }
    37. }
    38. if (status)
    39. result.Add(i);
    40. }
    41. return result.ToArray();
    42. }

    时间复杂度:O((n-m) * √n),其中 n 和 m 分别是输入的上限和下限。

  • 相关阅读:
    JAVA实现生活废品回收系统 开源
    PS太难学,这款软件更简单!——Lightroom
    媒体宣传如何助力品牌发展
    47.各种类型的线程池
    铁威马新品F2-212上线,全新设计,极致使用体验
    【消息队列笔记】chp1-消息队列的使用场景
    刷题之小蓝吃糖果和你究竟有几个好姐妹
    华三交换机知道ip怎么查找主机ip在接入交换机哪个端口下
    Linux多线程
    钡铼EdgeIO边缘计算 I/O 控制器
  • 原文地址:https://blog.csdn.net/ftfmatlab/article/details/133901951
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号