【问题标题】:List all primes up to 100列出 100 以内的所有素数
【发布时间】:2016-01-01 19:41:45
【问题描述】:

编写下面的代码,试图识别出 100 以上的所有素数。它输出 1,2 和 5。有人能看出为什么它不会继续超过前 3 个吗?

我知道我可以做一些效率调整(只有赔率数字等),但只是试图首先降低核心(过度杀伤)概念。我完全是个菜鸟,只是想通过编程来增强我的直觉,所以我知道这可能不是最优雅的解决方案,但更感兴趣的是为什么它不起作用。

感谢任何帮助.. 新年快乐!

static void Main(string[] args)
{
    int q = 100;
    for (int i = 1; i < q; i++)
    {
        if ((q % i) == 0)
        {
            bool isPrime = true;
            for (int j = 2; j < i; j++)
            {
                if ((i % j) == 0)
                {
                    isPrime = false;
                }
            }

            if (isPrime == true)
            { 
                Console.WriteLine(i + " is a prime number... hopefully.");
            }
        }
    }
    Console.ReadKey()
}

【问题讨论】:

  • 设置断点,单步调试代码,检查变量。
  • 注意:1、2、5不是前三个素数...
  • if ((q % i) == 0) 在做什么?
  • 3 也是素数,顺便说一句
  • 你已经很接近了,但是第一个 if 语句是你设置断点并实际观察正在发生的事情的地方。

标签: c# primes


【解决方案1】:

q%i 将结果过滤为 100 的素数,即 1、2、5

如果您删除该部分,它应该可以正常工作。

【讨论】:

  • 感谢我的朋友立即解决了它。我不是 100% 确定为什么大声笑,所以我要盯着这个看几个小时。我的意图是检查它是否是 100 的因数,然后继续检查该因数是否是素数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2013-04-04
相关资源
最近更新 更多