首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用C#找出一个数是否为质数?

如何用C#找出一个数是否为质数?
EN

Stack Overflow用户
提问于 2019-10-18 05:23:15
回答 1查看 83关注 0票数 0

我遇到了一个问题,这个问题会告诉我一个数字是否为质数。除了随机测试,我通过了所有的测试。我是一个入门级的开发人员,所以它可能不是很漂亮,但我希望帮助如何让这个通过测试,即使数字是"1008985750798“例如…

代码语言:javascript
复制
public static bool IsPrime(int n)
{   
    bool returnMe = true;

    if (n% 2 == 0 || n % 3 == 0 || n <= 1)
    {  
        returnMe = false;
    }
    if (n % 2 == 0 && n % 3 == 0)
    {
        returnMe = false; 
    } 
    if ( n == 2 || n == 3 || n == 7)
    {
        returnMe = true;     
EN

回答 1

Stack Overflow用户

发布于 2019-10-18 05:29:16

虽然Program to find prime numbers展示了一个很好的、高效的实现,但我认为你想要的是更容易理解的东西。

这是一种天真的方法:

代码语言:javascript
复制
public static void Main()
{
    for(uint i = 0; i < 1000; i++) {
        if (IsPrime(i)) Console.Write($"{i},");
    }
}

private static bool IsPrime(uint n)
{
   if (n < 3) return false;
   for (uint i = 2; i < n; i++)
       if (n % i == 0) return false;
   return true;
}

如果你想快一点,让我们向维基百科寻求帮助。

代码语言:javascript
复制
/// <summary>
/// Tests the number for primality. It is a c# version of the pseudocode from 
/// https://en.wikipedia.org/wiki/Primality_test
/// </summary>
private static bool IsPrime2(uint n)
{
    // The following is a simple primality test in pseudocode using 
    // the simple 6k ± 1 optimization mentioned earlier. 
    // More sophisticated methods described below are much faster for large n. 
    if (n <= 3)
        return n > 1;
    if (n % 2 == 0 || n % 3 == 0)
        return false;
    uint i = 5;
    while (i * i <= n)
    {
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
        i = i + 6;
    }
    return true;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58440903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档