[英]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.
}
num
和number
始終相同,因此我們可以從數學上講
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 = number
, number / num
始終為1,因此左側的值始終為true。
正確的部分甚至沒有任何意義。 除以1絕對不會做任何事情,因此number / 1
只是number
。 現在,您真正擁有的只是number == num
,並且由於您將num
和number
設置為相同,因此其結果也為true。
您最好只寫if (true)
。
您到底想用if語句完成什么?
因為每個數字除以1就是它自己的數字。 為什么數字和num
相等? 因為if條件之前的行將num
分配為number
。
num =數字; 如果應用條件,則每次設置num等於number
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.