簡體   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