首页 > 试题广场 >

素数判断

[编程题]素数判断
  • 热度指数:6232 时间限制: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。
记得先判断数字是否大于2,然后在遍历的时候注意for j in range(2,int(n**(1/2))+1):的+1,因为range(2,2)不会运行
发表于 2025-07-12 21:05:20 回复(0)
T=int(input())
for i in range(1,T+1):
    a=int(input())
    if a==1:
        print('No')
    else:
        for b in range(2,a+1):
            if b==a:
                print('Yes')
            elif a%b==0:
                print('No')
                break
            else:
                b=b+1
发表于 2025-07-12 20:35:54 回复(0)
import math
T = int(input())
for _ in range(T):
n = int(input())
if n < 2:
print("No")
else:
for i in range(2, int(math.isqrt(n))+1):
if n % i == 0:
print("No")
break
else:
print("Yes")
发表于 2025-07-12 20:16:31 回复(0)
#include <stdio.h>
#include <math.h>
int main()
{
    int n,i,j,a;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a);
        if(a<=1)
        {printf("No\n");continue;}
        int flag=1;
        for(j=2;j<=sqrt(a);j++)
        if(a%j==0)
        {flag=0;break;}
       
        printf("%s\n",flag?"Yes":"No");
    }

    return 0;
}
发表于 2025-07-09 16:40:52 回复(0)
# 碰碰运气
import random
[print(['Yes','No'][random.randint(0,1)]) for i in range(int(input()))]
发表于 2025-07-07 22:42:45 回复(0)
#include <math.h>
#include <stdbool.h>
#include<stdio.h>
bool isPrime(int num)
{
    if(num<=1)
    return false;
    if(num==2)
    return true;
    if(num%2==0)
    return false;
    int sqrt_num=sqrt(num);
    for(int i=3;i<=sqrt_num;i+=2)
    {
        if(num%sqrt_num==0)
        {
           return false;
        }
    }
    return true;
}
int main()
{
    int t, n;
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d", &n);
        if(isPrime(n))
        {
            printf("Yes\n");
        }
        else {
        printf("No\n");
        }
    }
    return 0;
}
发表于 2025-06-28 22:26:34 回复(0)
import math  # 用于计算平方根
def is_prime(num):
    if num <= 1:  # 处理负数、0 和 1
        return False
    if num == 2:  # 2 是最小的素数
        return True
    for i in range(2, int(math.sqrt(num)) + 1):
         if num % i == 0:
            return False
    return True
n=int(input())
for _ in range(n):  # 循环 n 次
    a = int(input())
    if is_prime(a):
        print("Yes")
    else:
        print("No")
发表于 2025-06-24 15:48:24 回复(0)
#include <stdio.h>

int main() {
    int T,a,i;
    scanf("%d\n",&T);
    while(T!=0)
    {T=T-1;
    scanf("%d\n",&a);
    for(i=2;i<=a;i++)
    {
        if((a%i)==0)
        break;
    }
    if(a==i)
   { printf("Yes\n");}
    else {printf("No\n");}
    }
    return 0;
}
发表于 2025-06-13 09:31:04 回复(0)
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");
        }
    }
}
发表于 2025-06-09 09:05:09 回复(0)