簡體   English   中英

將1-100的質數打印到單獨的文件中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM