【发布时间】: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 语句是你设置断点并实际观察正在发生的事情的地方。