【问题标题】:I'm trying to do a Prime Number finder but cant see why it's not working [closed]我正在尝试做一个质数查找器,但看不到它为什么不起作用[关闭]
【发布时间】:2016-01-19 17:21:40
【问题描述】:

我正在尝试做一个质数查找器,但不明白为什么它不起作用。 当我运行调试测试时,控制台中没有任何显示。有人可以检查一下并告诉我我做错了什么吗?

  List<int> primes = new List<int>();
        primes.Add(2);
        primes.Add(3);
        int maxPrime = 11;                //The maximum found Primes
        int primeCount = primes.Count;     //Current Number of Primes
        int num = 4;                    //Current Number
        int x = 0;                 //
        int curPrime = primes[x];

        while (primeCount < maxPrime)
        {
            if (x != primeCount)
            {
                if (num % primes[x] == 0)
                {
                    num++;
                    x = 0;
                }
                else
                {
                    x++; 
                }
            }

            else
            {
                primes.Add(num);
                primeCount=primes.Count;
                x = 0;
            }
        }
        primes.ForEach(i => Console.Write("{0}\t", i));

【问题讨论】:

  • 当您在调试器中单步执行代码时,具体而言观察到的行为与预期行为有何不同?发生这种情况时的运行时值是多少?
  • there are so00000000 许多关于如何做到这一点的工作示例在这里是一个更简单的示例,使用单个值stackoverflow.com/questions/886540/prime-numbers-c-sharp
  • 增加primeCount 会有所帮助....

标签: c# list numbers primes


【解决方案1】:

你有一个无限循环。

由于您从不修改 primeCountmaxPrime,这将始终为真:

while (primeCount < maxPrime)

为了结束该循环,您需要修改这两个值之一,以使条件评估为假。

(注意:除此之外,代码中似乎还存在其他错误/问题。例如,num = num++; 没有按照您的想法执行。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多