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