首页 > 试题广场 >

素数判断

[编程题]素数判断
  • 热度指数:1329 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个正整数 n,判断其是否为素数。素数定义为大于 1 且仅能被 1 和自身整除的正整数。

输入描述:
\hspace{15pt}第一行输入一个整数 T1 \leqq T \leqq 10),表示需要判断的整数个数。

\hspace{15pt}接下来 T 行,每行输入一个正整数 n1 \leqq n \leqq 10^5)。


输出描述:
\hspace{15pt}输出 T 行,每行对应一个测试用例:若 n 是素数,输出 "Yes"(不含双引号);否则输出 "No"(不含双引号)。
示例1

输入

2
1
2

输出

No
Yes

说明

第一个测试用例 n=11 不是素数,输出 No;第二个测试用例 n=22 是素数,输出 Yes。
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        while (t-- > 0) {
            int n = in.nextInt();
           
            if (n <= 1) {
                System.out.println("No");
                continue;
            }
           
            boolean isPrime = true;
            // 只需检查到 sqrt(n) 即可
            int limit = (int) Math.sqrt(n);
            for (int i = 2; i <= limit; i++) {
                if (n % i == 0) {
                    isPrime = false;
                    break;
                }
            }
           
            System.out.println(isPrime ? "Yes" : "No");
        }
    }
}
发表于 今天 09:05:09 回复(0)