首页 > 编程语言 >c# 求质数的方法

c# 求质数的方法

时间:2024-01-17 18:46:48浏览次数:31  
标签:maxNum 标记 c# 质数 int marks 方法

  1. 质数定义法:质数是指只能被1和自身整除的正整数,即除了1和它本身以外没有其他因数。因此,判断一个数是否为质数,只需要将它分别除以2到它的平方根的整数,如果都不能整除,则它就是质数。这种方法比较简单直观,但对于较大的数会比较耗时。
     1         static bool IsPrime(int num)
     2         {
     3             if (num <= 1) return false;
     4             for (int i = 2; i * i <= num; i++)
     5             {
     6                 if (num % i == 0) return false;
     7             }
     8             return true;
     9         }
    10 
    11         static int CountPrimes(int n)
    12         {
    13             int count = 0;
    14             for (int i = 2; i < n; i++)
    15             {
    16                 if (IsPrime(i)) count++;
    17             }
    18             return count;
    19         }            

     

  2.  埃拉托色尼筛法:埃拉托色尼筛法是一种基于质数定义的算法,可以在一定范围内找出所有的质数。其基本思想是先列出所有的正整数,然后从2开始,将2的倍数标记为合数,再将下一个未标记的数3作为新的质数,将3的倍数标记为合数,以此类推。这种方法可以大大减少计算量,提高效率。

     

            static int GetPrimesNum(int maxNum)
            {
                int result = 0;
                var marks = new int[maxNum - 1];
                for (int i = 0; i < maxNum - 1; i++)
                {
                    if (marks[i] == 0)
                    {
                        result++;
                        int temp = 2;
                        while ((i + 2) * temp <= maxNum)
                        {
                            marks[(i + 2) * temp - 2] = 1;
                            temp++;
                        }
                    }
                }
                return result;
            }
  3. 米勒-拉宾素数测试法:米勒-拉宾素数测试法是一种基于费马小定理的概率算法,用于测试一个数是否为质数。其基本思想是随机选择一个数a作为底数,然后计算a^(n-1) mod n的值,如果等于1,则该数可能是质数;如果不等于1,则一定不是质数。这个过程可以重复进行多次,每次选择不同的底数a,以提高测试的准确性。这种方法具有高效、准确的特点,但存在一定的概率错误率。

    //待续

     

标签:maxNum,标记,c#,质数,int,marks,方法
From: https://www.cnblogs.com/MarcLiu/p/17970721

相关文章

  • springMvc如何解决请求中文乱码问题
    方式一:解决get请求中文乱码问题  每次请求前用encode对url进行编码方式二:在应用服务器上配置URL编码格式,在tomcat配置文件server.xml增加encodeURL编码格式,然后重启解决post请求方式一:使用spring提供的编码过器 在web.xml文件配置编码过lu器,增加一下配置: <web-ap......
  • TCP 拥塞控制对数据延迟的影响
    哈喽大家好,我是咸鱼今天分享一篇文章,是关于TCP拥塞控制对数据延迟产生的影响的。作者在服务延迟变高之后进行抓包分析,结果发现时间花在了TCP本身的机制上面:客户端并不是将请求一股脑发送给服务端,而是只发送了一部分,等到接收到服务端的ACK,然后继续再发送,这就造成了额外的RTT......
  • forEach控制器怎么用
    最近,Apipost对自动化测试进行了优化,新增foreach控制器。这个新功能的引入为自动化测试带来了更高的效率和灵活性。本文将介绍Apipost的foreach控制器,解释其用途和优势,帮助您更好地利用这一功能提升自己的测试工作。什么是foreach控制器?Foreach控制器允许您在测试用例中迭代执行......
  • AtCoder ABC 279 复盘
    AwwwvvvvvvACCodeBLOOKUPACCodeCRANDOMACCodeDFreefall分析一下样例1,可以发现答案存在一个\(\sqrt{g}\),然后就联想到三分。这里图像是开口朝上的。注意要开longlong!(但我的代码需要__int128才行,玄学)ACCodeECheatingAmidakuji分析过程,可以发现第\(i\)次......
  • archlinux xfce 出现[FAILED] Failed to mount /boot, systemctl status boot.mount出
    开机显示:[FAILED]Failedtomount/boot使用命令systemctlstatusboot.mount后出现mount:/boot:unknownfilesystemtype'vfat':pacman-Qilinux显示安装了6.7.arch3-1版本的内核而uname-a显示6.6.10-arch1-1版本的内核我的环境是archxfce+windows8.1个人原因......
  • Development and Construction of Dapp Pledge Mining System
    Pledgeminingsystemisanemergingapplicationofblockchaintechnology,whichpledgesdigitalassetsontheblockchaintoobtaincorrespondingproofofequity,inordertoachieveproofofequityminingontheblockchain.Thedevelopmentofpledgeminin......
  • 云原生场景下,AIGC 模型服务的工程挑战和应对
    作者:徐之浩、车漾“成本”、“性能”和“效率”正在成为影响大模型生产和应用的三个核心因素,也是企业基础设施在面临生产、使用大模型时的全新挑战。AI领域的快速发展不仅需要算法的突破,也需要工程的创新。大模型推理对基础设施带来更多挑战首先,AI商业化的时代,大模型推理训练会......
  • 云原生场景下,AIGC 模型服务的工程挑战和应对
    作者:徐之浩、车漾“成本”、“性能”和“效率”正在成为影响大模型生产和应用的三个核心因素,也是企业基础设施在面临生产、使用大模型时的全新挑战。AI领域的快速发展不仅需要算法的突破,也需要工程的创新。大模型推理对基础设施带来更多挑战首先,AI商业化的时代,大模型推理训练会......
  • 无涯教程-SQL Numeric Functions函数
    SQL数字函数主要用于数字操作和/或数学计算。下表详细介绍了数字函数-Sr.No.Function&描述1ABS()返回数值表达式的绝对值。2ACOS()返回数值表达式的反余弦值。如果该值不在-1到1之间,则返回NULL。3ASIN()返回数字表达式的反正弦值。如果值不在-1到1的范围内,则返......
  • Docker初级:Docker安装部署Nginx、Tomcat
    Docker初级:Docker安装部署Nginx、Tomcat:https://blog.csdn.net/Zp_insist/article/details/127636875?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170548607116800188590783%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170548......