Java中的素数检查

时间:2018-05-05 06:03:52

标签: java loops for-loop

我是编程新手,我现在正在学习Java。有没有人可以帮我解决如何使用for-loop检查数字是否为素数的问题?提前感谢!

4 个答案:

答案 0 :(得分:0)

来自this网站。

如果他们拥有的唯一除数是1和它本身,我们知道数字是素数。通常,我们可以检查从1到自身的每个整数(不包括)并测试它是否均匀分配。

例如,人们可能想要运行此算法:

//checks whether an int is prime or not.
boolean isPrime(int n) {
    for (int i = 2; i < n; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}

一开始看起来并不坏,但我们可以让它更快 - 更快。考虑如果2除以某个整数n,那么(n / 2)也将n除。这告诉我们,我们不必尝试从2到n的所有整数。现在我们可以修改我们的算法:

//checks whether an int is prime or not.
boolean isPrime(int n) {
    for (int i = 2; 2 * i < n; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}

通过一些更高效的编码,我们注意到你真的只需要达到n的平方根,因为如果列出一个数字的所有因子,则平方根将始终位于中间(如果它碰巧不是一个整数,我们仍然可以,我们可能过于近似,但我们的代码仍然有用。)

最后,我们知道2是“最奇怪的”素数 - 它恰好是唯一的素数。因此,我们只需要单独检查2,然后遍历奇数到n的平方根。最后,我们的代码将类似于:

//checks whether an int is prime or not.
boolean isPrime(int n) {
    //check if n is a multiple of 2
    if (n % 2 == 0) return false;
    //if not, then just check the odds
    for (int i = 3; i * i <= n; i += 2) {
        if (n % i == 0)
            return false;
    }
    return true;
}

正如你所看到的,我们已经从检查每个整数(最多n到n以找出一个数字是素数)到检查一半的整数直到平方根(奇数,真的)。这是一个巨大的进步,特别是考虑到数字很大时。

答案 1 :(得分:0)

我建议你从最底层阅读@Neng Liu的答案并尝试理解所有的算法。 但是,您可以从@Neng Liu的答案中查看此代码以获取第二个算法。

import java.util.Scanner;


public class PrimeNumber{
    public static void main(String [] args){
       int number,i,rem;
       boolean flag = true;
       Scanner input = new Scanner(System.in);
       System.out.print("Enter an integer to check if its PRIME number : ");
       number = input.nextInt();
       if(number >= 2){
           for(i = 2; 2 * i < number; i++){
               rem = number % i;
               if(rem == 0){
                   flag = false;
                   break;
               }
           }
           if(flag){
               System.out.println(number+" is a Prime number");
           }else{
               System.out.println(number+" is not Prime number");
           }
       }else{
           System.out.println("1 & Negative numbers can't be prime ! ");
       }

    }
}

答案 2 :(得分:0)

这是一个检查数字是否为素数的简单程序;

import java.util.*;
class Example{
public static void main(String args[]){
    Scanner input=new Scanner(System.in);
    int count=0;
    System.out.print("Input a Number : ");
    int num=input.nextInt();
    for(int i=2;i<num;i++){
        if(num%i==0){count++;}
    }
    if(num>1&count==0){
        System.out.print("\nIt Is a Prime Number.");
    }
    else{
        System.out.print("\nIt Is a Not Prime Number.");
    }
}

}

答案 3 :(得分:0)

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