gpt4 book ai didi

java - 在 Java 中测试素数 - 添加附加条件

转载 作者:行者123 更新时间:2023-12-01 12:41:39 26 4
gpt4 key购买 nike

这里是初学者。所以我想编写一个程序,打印出用户输入的数字之前的所有素数。例如,用户输入 5,程序打印出 2 和 3。我理解这部分,但是我正在努力解决的是,如果我希望程序打印出用户输入的数字是否是素数(简单的是或不是),该怎么办?否)如果输入的数字大于 50。这是第一部分的代码:

public class Primes {      

public static void main(String args[]) {

System.out.println("All primes up to: ");

int num = new Scanner(System.in).nextInt();

System.out.println("Prime numbers from 1 to " + num + " are: ");

for(int number = 2; number<=num; number++){
if(isPrime(number)){
System.out.println(number);
}
}

}

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

老实说,我不知道接下来应该做什么。我的第一个程序(“Hello world” 不算;P)。

最佳答案

编辑:

您当前的代码似乎运行良好。

根据您在评论之一中提到的疑问:是的,但是我在哪里添加执行以下操作的 if 语句:如果输入的数字低于 50,则程序打印出所有素数到输入的号码。如果用户输入的数字大于 50,它只会告诉您输入的数字是否是素数(简单地“这是素数”或“不,它不是素数”)。希望能让事情变得更清楚

您需要在输入后进行检查:

int num = new Scanner(System.in).nextInt();  

if( number > 50 )
{
if(isPrime(number))
{
// print out is prime
}
// print out it is not prime
}

else
{
System.out.println("Prime numbers from 1 to " + num + " are: ");

for(int number = 2; number<=num; number++){
if(isPrime(number)){
System.out.println(number);
}
}
}

建议:

但是,为了触及算法部分,我建议使用埃拉托斯特尼筛法来根据您的情况需要挑选出给定范围内的所有素数。

示例:

要查找所有小于或等于 30 的素数,请按以下步骤操作:

首先生成一个从 2 到 30 的整数列表:

2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

删除(筛选出)2 的倍数,结果为:

2  3     5     7     9    11    13    15    17    19    21    23    25    27    29

列表中2之后的第一个数字是3;从列表中删除 3 的倍数即可得到:

2  3     5     7          11    13          17    19          23    25          29

列表中3之后的第一个数字是5;从列表中删除剩余的 5 的倍数:

2  3     5     7          11    13          17    19          23                29

列表中 5 之后的第一个数字是 7,但 7 的平方是 49,大于 30,因此该过程完成。最终列表由所有小于或等于 30 的素数组成。

这里是附加的代码供引用(免责声明:我从 this 网站获取此代码。只是将其粘贴到此处以获得更直接的可见性)。

代码:

public class PrimeSieve {
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);

// initially assume all integers are prime
boolean[] isPrime = new boolean[N + 1];
for (int i = 2; i <= N; i++) {
isPrime[i] = true;
}

// mark non-primes <= N using Sieve of Eratosthenes
for (int i = 2; i*i <= N; i++) {

// if i is prime, then mark multiples of i as nonprime
// suffices to consider mutiples i, i+1, ..., N/i
if (isPrime[i]) {
for (int j = i; i*j <= N; j++) {
isPrime[i*j] = false;
}
}
}

// count primes
int primes = 0;
for (int i = 2; i <= N; i++) {
if (isPrime[i]) primes++;
}
System.out.println("The number of primes <= " + N + " is " + primes);
}
}

关于java - 在 Java 中测试素数 - 添加附加条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043076/

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