下一个素数基于用户输入

时间:2014-09-30 19:13:57

标签: java methods numbers user-input

我有一种检查数字是否为素数的方法。我需要编写一个允许用户输入数字的程序,然后程序将显示下一个最大的素数。这就是我到目前为止所做的......它非常残酷,因为我是一名初学CS学生,他获得了这些材料,却无法以我想要的方式完全实现代码。

package nextprime;

import java.util.Scanner;

public class NextPrime {

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

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int numberInput;
    System.out.println("Enter a number: ");
    numberInput = input.nextInt();
    int end = numberInput + 2;
    if (isPrime(end)) {
        System.out.println(end);
    }
    int i;
    for (i = numberInput; i < end; i++) {

    }
    if (isPrime(i)) {
        System.out.println(i);
    }
}
}

3 个答案:

答案 0 :(得分:0)

不确定end的逻辑是什么,也许你需要有一个边界。如果没有,那么您可以删除end逻辑并将for循环替换为:

  

for(i = numberInput;!isPrime(i); i ++);

或者您可以使用while循环,例如:

public static void main(String[] args) { Scanner input = new Scanner(System.in); int numberInput; System.out.println("Enter a number: "); numberInput = input.nextInt(); if (isPrime(numberInput)) numberInput++; while (!isPrime(numberInput)) numberInput++; System.out.println(numberInput); }

答案 1 :(得分:0)

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);    
    System.out.print("Enter a number");
    int number = input.nextInt();

    while(!isPrime(number)){
        number++;
    }
    System.out.println(number+" is the minimum prime number.");

}

答案 2 :(得分:0)

代码用c#.net编写。您可以将其转换为java。素数没有检查以传统方式完成。你可以使用自己的检查方法。在此程序中,不使用用户定义的函数。所有代码都可以写在主块中。

        int number= Convert.ToInt32(textBox1.Text);
        int counter;
        counter = 0;
        for (int divisor = 1; divisor < number; divisor++)
        {
            if (number % divisor == 0)
                counter++;
        }
        if (counter == 1)

            richTextBox1.Text = number.ToString() + " is a prime number";
        else
        {
            number++;

            while (number> 0)
            {
                counter = 0;
                for (int divisor = 1; divisor < number; divisor++)
                {
                    if (number % divisor == 0)
                        counter++;
                }
                if (counter == 1)
                {
                    richTextBox1.Text = "Next prime numbere is " + number.ToString();
                    break;
                }

                number++;
            }
        }