gpt4 book ai didi

java - 打印出 2 到 1000 之间的素数

转载 作者:行者123 更新时间:2023-11-29 09:44:01 24 4
gpt4 key购买 nike

我正在编写一个代码,将 2 到 1000 之间的所有质数写入一个名为 primes.txt 的文件中。出于某种原因,我无法找出解决此问题的正确方法。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class Problem6 {

/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
PrintWriter prw = new PrintWriter("primes.txt");
for (int i = 2; i <= 1000; i++){
if (checkIfPrime(i) == true){
System.out.println(i);
prw.println(i);
}
}
}

public static boolean checkIfPrime (int num){
boolean isPrime = true;
for (int i = 2; i <= 1000; i++){
if ( num % i == 0 ){
isPrime = false;
}
}

return isPrime;
}
}

我只是不知道该怎么办...请帮忙谢谢!

最佳答案

当您将第一个数字 2 传递给 checkIfPrime 时会发生什么?将 2 除以 2 的余数为 0,错误地声称 2 不是素数。

在实际达到 num 之前,您需要停止测试余数。在 i 达到 num 之前停止你的 i 循环。 (事实上​​ ,您可以在 i 达到 num 的平方根后停止)。

for (int i = 2; i < num; i++){

甚至

for (int i = 2; i <= Math.sqrt(num); i++){

如果您喜欢冒险,可以尝试实现 Sieve of Eratosthenes , 它将所有合数标记为任意限制(在本题中为 1000)。然后你只需打印出其余的数字——素数。

关于java - 打印出 2 到 1000 之间的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com