繁体   English   中英

得到所有素数

[英]getting all prime numbers

我编写了一个简单的C#控制台应用程序,该应用程序获取所有素数,并将其堆叠到字符串变量中。

我的问题是,为什么第一个“如果”接受所有数字? 我认为我写的规则很好。 我的代码(当然所有变量的格式都在脚本的开头):

check++;
number++;
num = number;
if (number / num == 1 && number / 1 == num)
{
    Console.WriteLine("Working...");
    Console.WriteLine("Numbers Checked: " + check);

    produce++;
    Console.WriteLine("Numbers Prodused: " + produce);


    Console.WriteLine("Numbers Failed : " + fail);

    System.Threading.Thread.Sleep(1);
    Console.Clear();

    //storing the numbers
    str += Convert.ToString(number);
}
else
{
    fail++;
}
Console.WriteLine(str);

问题是,当我运行程序时,失败指示符保持为0,这意味着循环正在处理所有数字,质数没有例外。

我该如何解决? 我的“如果(规则)”是错误的吗?


编辑!

我刚开始;)这就是我所做的:

        bool isPrime = false;
        int number = 0, counter = 0;

        while (number <= counter)
        {
            counter++;
            number++;
            isPrime = true;
            for (int i = 2; i < number; ++i)
            {
                if (number % i == 0)
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                System.Threading.Thread.Sleep(1);
                Console.WriteLine(number);
                Console.Beep();
            }
            Console.WriteLine("Try Number " + counter);

效果很好,我将继续将其开发为Windows窗体应用程序;)

 num = number;
        if (number / num == 1 && number / 1 == num)
        {

假设number等于10

num = number = 10;

if(10 / 10 == 1 && 10 / 1 == 10) {
    // This is called a constant positive.
}

numnumber始终相同,因此我们可以从数学上讲

for all a,b where a == b.

a/b = 1
a/1 = b

这意味着,无论价值number ,你总是会评估为true在你的if statement

你想做什么

您应该更仔细地了解如何定义质数 目前,您要说的是:

当且仅当可以将整数除以1及其本身时,某些整数a 才被视为素数。

您还需要证明它也不能被数字除以小于!

所以..

可以采用的方法是特定的方法,即检查所有 0 << i << a (在0和当前数字之间),或者可以使用一些更有趣的方法,如果数字为a,则可以解决该问题。 probabilistic prime 也就是说,我们certain它是质数,但是很有可能是质数。

对于某些素数,请检查一下 ,当您更有信心时,请尝试一下

对于概率素数,请在此处 这将为您解释许多不同的算法。

这绝对没有道理。 让我们分解以下几行:

num = number;
if (number / num == 1 && number / 1 == num)

由于您设置num = numbernumber / num 始终为1,因此左侧的值始终为true。

正确的部分甚至没有任何意义。 除以1绝对不会做任何事情,因此number / 1只是number 现在,您真正拥有的只是number == num ,并且由于您将numnumber设置为相同,因此其结果也为true。

您最好只写if (true)

您到底想用if语句完成什么?

因为每个数字除以1就是它自己的数字。 为什么数字和num相等? 因为if条件之前的行将num分配为number

num =数字; 如果应用条件,则每次设置num等于number

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM