[英]Printing prime numbers from 1-100 into a separate file?
我必須打印一個都是素數的數字1-100的列表。 這些素數必須打印到單獨的.txt文件中。
import java.io.*;
public static boolean isPrime(int number)
{
int division = 0;
if(number<1)
{
return false;
}
for(division=1; division<=number; division++)
{
if(number%division==0)
{
division+=1;
}
if((number%division>2) || (number==1) || (number==-1))
{
return false;
}
}
return true;
}
public static void main(String[] args) throws IOException
{
PrintWriter fileToWrite = new PrintWriter("primeNumberList.txt");
for(int currentNumber=1; currentNumber<=100; currentNumber++)
{
if(isPrime(currentNumber))
{
fileToWrite.println(currentNumber);
}
}
fileToWrite.close();
System.out.println("The prime numbers have been listed in the file primeList.txt");
}
}
我有這段代碼,每當我運行它時,它只會將數字打印到。 我有什么辦法可以更改它?
這看起來像是一個作業問題,因此我將避免使用完整的代碼解決方案。
另外,您的最后一句話似乎是斷句-我猜您是在說要打印的數字不是質數。
您可能要看的一件事是Eratosthenes篩 。 如您所定義, isPrime
將無法正常工作。
第一個條件if (number % divisor) == 0
始終對1成立(因此迭代器不應該從那里開始),如果對任何大於1的值都為true,則number
不是素數,並且該函數應該返回false
。
另外值得注意的是,范圍不應為division<=number
,因為number%number
始終為0。
在第二個條件isPrime
沒有做任何事情,從primefinding的角度來看是有用的。
Eratosthenes的Sieve是一個更為優雅的尋素工具,它不僅可以遍歷所有小於該整數的整數,而且它的實現方法還是留給學生練習。
祝好運!
您的isPrime函數不起作用,請嘗試以下代碼:-
public static boolean isPrime(int number)
{
for(int division = 2; division < number; division++) {
if(*MATHS FOR PRIME*)
return false;
}
return true;
}
從第一個質數2開始,循環遍歷所有素數,看是否均分。 我已經完成了數學運算,但是您應該可以通過快速的Google找到它。
這是你的問題:
if((number%division>2) || (number==1) || (number==-1))
第一個條件是,如果數字和除法的模數大於2,則返回false。 ,則在循環的第一次迭代中,每個大於3的數字都會發生這種情況。 正確的循環如下所示:
for(division=2; division<number; division++)
{
if(number%division == 0)
{
return false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.