java - java 小于给定数的最大素数

标签 java

我的问题很简单,但我不知道如何解决我想要的问题。 我必须找到小于给定数字的最大素数,如果不存在则打印消息。

import java.util.Scanner;

public class Ex8 {
    public static void main(String[] args){
        int n;
        System.out.println("Give the number: ");
        Scanner in = new Scanner(System.in);
        n=in.nextInt();
        while(prim(n) == false){
            n--;
        }                                     
        System.out.println(n);                    

    }


    public static boolean prim(int m){
        int n=m;
        for(int i=2;i<n;i++){
            if(n%i == 0){
                return false;
            }

        }   
        return true;
    }
}

代码有效,如果数字是 10,它会打印 7,但我想进行 2 个新的修改,但我找不到解决方案。例如,如果给定数字是 1,应如何修改我的程序以打印消息?我尝试编写一个 if-else 但如果我用 if 修改 while ,这将没有帮助。 第二件事,如何使得如果给定的数字是质数 nr ,代码仍然会找到比给定的数字少的数字。如果我给出数字 7,输出也是 7。 谢谢。

最佳答案

  1. 您无需修改​​ while - 只需在其周围编写 if 即可。
  2. 在开始测试素数之前,只需递减 n 即可。

    if (n < 2) {
        System.out.println("Number must be greater than 1");
    } else {
        n--;
        while (!prim(n)) {
            n--;
        }                                     
        System.out.println(n);                    
    }
    

或者:

if (n < 2) {
    System.out.println("Number must be greater than 1");
} else {
    while (!prim(--n));                                     
    System.out.println(n);                    
}

关于java - java 小于给定数的最大素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32846274/

相关文章:

java - 错误页面上不显示西里尔文字

java - CompletableFuture VS @Async

java - JSpinner 值变化监听器

java - Jsoup child 尺寸值不正确

java - Spring 和 hibernate : How to implement more than 1 POJO in one form

java - 添加文本时自动调整 jPanel 的大小

java - kafka消费者动态检测添加的主题

java - 实现自定义 Keycloak 身份 validator SPI 时遇到的问题

JavaFX TableView 性能问题

java - 如何从 Java 应用程序使用 XSLT 3.0?