首页 > 试题广场 >

判断是否是素数

[编程题]判断是否是素数
  • 热度指数:1118 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
质数(又称素数),是指在大于1的自然数中,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数)。请写个程序判断输入的数字是否是质数,如果是素数请输出:true,不是请输出false

输入描述:
输入待判断的数字


输出描述:
判断的结果:true或false
示例1

输入

2

输出

true
示例2

输入

4

输出

false

备注:
请注意算法效率,该题目有时间限制 ,  输入的数字小于2^64 次幂
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long num =  Long.valueOf(scanner.next());
        int i = 2;
        int k = 1;
        if (num > 1) {
          if (num == 2 || num == 3) {
              System.out.println(true);
          }
          if(num % i == 0){ k=0;}
          else{
          i++;//把i变成3,从3开始筛选
          int end = (int) Math.sqrt(num);
          while (i <= end) {
             if (num % i == 0) {
               k=0;
               break;
             }else{
               i+=2;//因为i从3开始,可以只判断奇数,跳过偶数
            }
          }
          }
          if(k==0){
            System.out.println(false);
          }else{
            System.out.println(true);
         }
        }else {
           System.out.println("输入数字不合规,请输入大于1的数字");
        }
   
    }
}
发表于 2023-08-17 18:14:39 回复(0)
#include <iostream>
#include <cmath>

using namespace std;

bool isPrimeNum(long long& n) {
    return (n == 2 || n == 3) || (n % 6 == 1) || (n % 6 == 5) ? true : false;
}

int main() {
    long long n;
    while (cin >> n) {
        cout << boolalpha;
        cout << isPrimeNum(n) << endl;
    }
    return 0;
}
发表于 2022-09-12 20:19:54 回复(0)
import java.util.*;
import java.math.*;
public class Main {
   
    public static void main(String[] args){
        Scanner in = new Scanner (System.in);
        BigInteger a;
        while(in.hasNextBigInteger()){
            a = in.nextBigInteger();
            if(a.isProbablePrime(1))
                System.out.println("true");
            else
                System.out.println("false");
        }
    }
}

发表于 2022-08-01 23:19:17 回复(0)
package leecode;

public class IsPrimeDemo {
    public static boolean isPrime(int n){
        if (n < 1){
            return false;
        }
        int i = 2;
        int end = (int) Math.sqrt(n);
        while (i <= end ){
            if (n % i == 0){
                return false;
            }
            ++i;
        }
        return true;
    }

    public static void main(String[] args) {
        int n = 7;
        System.out.println(isPrime(n));
    }
}

发表于 2021-02-24 15:46:25 回复(0)
public static void main(String[] args) {
    while (true) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字");
        int num = scanner.nextInt();
        if (num > 1) {
          if (num == 2 || num == 3) {
              System.out.println(true);
          }
          int i = 2;
          int end = (int) Math.sqrt(num);
          while (i <= end) {
             if (num % i == 0) {
               System.out.println(false);
               break;
             }else{
               System.out.println(true);
               break;
             }
          }
        }else {
           System.out.println("输入数字不合规,请输入大于1的数字");
        }
    }
}

发表于 2021-02-07 14:05:59 回复(0)

    public static Boolean isPrimeNum(Integer num) {
        if (num != null && num > 1) {
            if (num == 2 || num == 3) {
                return true;
            }
            int i = 2;
            int end = (int) Math.sqrt(num);
            while (i++ <= end) {
                if (num % i == 0) {
                    return false;
                }
            }
            return true;
        }
        return true;
    }


编辑于 2021-02-24 20:04:13 回复(3)