[英]there is no output on calculating prime number
我想打印前100個素數。 所以,我創建了一個int 100數組。我添加了第一個prime,bag [0] = 2,然后對於以下數字,我試着編寫一個算法。 它將從3開始並繼續直到陣列已滿。 如果它是否可以被數組中的前一個元素整除,那么每個數字都被確定為是素數,如果它是素數,那么它將被添加到數組中。
這是我的代碼:
public class Trial02
{
public static void main( String[] args)
{
int[] bag = new int[100];
bag[0] = 2; //first element of prime array
int valid = 1;
int i;
boolean result = true;
String str = "";
//starting from 3 it checks if a number is prime until array is full
for( i=3; valid<bag.length; i++)
{
//it checks if previous primes in array are divisible by current number until coming to current number
for(int k=0; k<valid; k++)
{
if( i % bag[k] == 0)
result = false;
}
if( result == true) //if it is prime it is added to array
{
bag[valid] = i;
valid ++;
}
}
//printing results
for(int m=0; m < bag.length; m++)
str = str + bag[m] + " ";
System.out.println("zaa xd");
System.out.println(str);
}
}
但它沒有給出任何輸出,只是一個空白。 我無法找到我的錯誤所在。 提前致謝。
你從來沒有真正檢查一個數字是否是素數( result
沒有設置在任何有用的地方)
看起來你需要重置result = true;
在第一個for
循環中。 您的代碼已發布設置為result = false
,然后永遠不會更改它。
最明顯的錯誤是你的boolean result = true;
在循環之外:一旦設置為false
,它永遠不會被設置回true
。 您沒有看到任何輸出,因為您的程序永遠不會停止。
作為旁注,你不需要檢查所有素數到你發現的最后一個:你可以在到達候選素數的平方根時停止,即i*i > bag[k]
。 當你的限制為100時,你不會注意到任何效果,但如果你嘗試100000,它會有更多幫助。
您的代碼中存在許多邏輯錯誤。
首先,你有一個for循環,其終結案例與其索引器無關。 雖然這是有效的,但它使代碼更難理解。
更重要的是,結果只會被設置為false,而不是true,因此循環將永遠運行,因為有效永遠不會改變。
您確定前100個素數的邏輯是不正確的。 並且存在多個邏輯錯誤,如其他人所示。 我重寫了你的代碼,但沒有經過測試。 我猜它會起作用:
public class Trial02
{
public static void main( String[] args)
{
int[] bag = new int[100];
bag[0] = 2; //first element of prime array
int valid = 1;
int i;
boolean isPrime = true;
String str = "";
//starting from 3 it checks if a number is prime until array is full
for( i=3; valid<bag.length; i++)
{
isPrime = true;
for (int k = 2; k < i; k++)
{
if (i % k == 0)
{
isPrime = false;
break;
}
}
if (isPrime == true)
{
bag[valid++] = i;
}
}
//printing results
for(i=0; i < bag.length; i++)
str = str + bag[i] + " ";
System.out.println("zaa xd");
System.out.println(str);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.