首页 > 试题广场 >

素数判断

[编程题]素数判断
  • 热度指数:49419 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定 T 个正整数 n,判断每个 n 是否为素数

【名词解释】
\hspace{15pt}素数:大于 1 且仅能被 1 和自身整除的正整数。

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

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


输出描述:
\hspace{15pt}输出 T 行,每行对应一个测试用例:若 n 是素数,输出 \text{Yes};否则输出 \text{No}
示例1

输入

2
1
2

输出

No
Yes

说明

第一个测试用例 n=11 不是素数,输出 No;第二个测试用例 n=22 是素数,输出 Yes。
#include<stdio.h>
#include<math.h>
int isprime(int n)
{
    if(n<=1)
    return 0;
    if(n<=3)
    return 1;
    if(n%2==0||n%3==0)
    return 0;
    for(int i=5;i*i<=n;i=6+i)
    {
        if(n%(i+2)==0||n%i==0)
        return 0;
    }
            return 1;
        }
int main()
{
    int n,num[10];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&num[i]);
    }
    for(int i=0;i<n;i++)
    {
    if(isprime(num[i]))
    {printf("Yes\n");}
    else{
        printf("No\n");
    }}
    return 0;
    }
if(n<=1)比较复杂的位置在于函数,素数的判断要是规律总结得当,会发现其实都是6k+1或者6k-1,剩下的就是照着这个思路去编写,主函数正常按照思路编写即可

发表于 2025-12-19 21:22:22 回复(0)
#include<stdio.h>

int Judge(int x)
{
    if(x <= 1) return 0;
    if(x == 2) return 1;
    if(x % 2 == 0) return 0;
    for(int y = 3;y * y <= x;y += 2)
    {
        if(x % y == 0) return 0;
    }
    return 1;
}
int main()
{
    int T,n;
    scanf("%d",&T);
    for(int m = 1;m <= T;m++)
    {
        scanf("%d",&n);
        if(Judge(n))
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }
    }
    return 0;
}
发表于 2025-11-27 16:26:12 回复(0)
#include <stdio.h>
int check(int a) {
    if (a<=1) return  0;
    if (a==2) return  1;
    if (a%2==0) return  0;
    for (int i=3;i<a/2;i++) {
        if (a%i==0) return  0;
    }
    return  1;

}
int main(){
int T;
    scanf("%d",&T);
    while (T--) {
        int n;
        scanf("%d",&n);

        if (check(n)) printf("Yes\n");
        else printf("No\n");

    }
    return  0;

}
发表于 2025-11-10 23:24:07 回复(0)
#include <stdio.h>
int su(int c) {
    if (c <= 1) return 0;
    for (int i = 2; i < (c / 2) + 1; i++) {
        if (c % i == 0)
            return 0;    
}
    return 1;
}
int main() {
    int n, a;
    scanf("%d\n", &n);
    for (int i = n; i > 0; i--) {
        scanf("%d\n", &a);
        printf(su(a)?"Yes\n":"No\n");
    }
}
发表于 2025-09-27 20:26:30 回复(0)

还是用函数来写比较爽。

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

bool is_prime(int num)
{
    bool prime_falg = true;

    if (num <= 1)
    {
        return false;
    }

    for (int count = 2; count <= (int)sqrtf(num); count++)
    {
        if (num % count == 0)
        {
            prime_falg = false;
            break;
        }
    }

    return prime_falg;
}

int main() {

    int T = 0, n = 0;

    scanf("%d", &T);

    while (T--)
    {
        scanf("%d", &n);
        printf("%s\n", is_prime(n) ? "Yes" : "No");
    }

    return 0;
}
发表于 2025-08-06 20:30:04 回复(0)
#include <stdio.h>
int main() {
    int T, i, j, k;
    scanf("%d", &T);
    if (T <= 0)
        return 0;
    int array[T];
    for (i = 0; i < T; i++) {
        scanf("%d", &array[i]);
    }

    for (j = 0; j < T; j++) {
        int isPrime = 1;
        if (array[j] < 2)
            isPrime = 0;
        else {
            for (k = 2; k < array[j]; k++) {
                if (array[j] % k == 0) {
                    isPrime = 0;
                    break;
                }
            }
        }
        printf(isPrime ? "Yes\n" : "No\n");
    }
    return 0;
}

发表于 2025-07-24 20:17:55 回复(0)