55.Acwing基础课第866题-简单-试除法判定质数

55.Acwing基础课第866题-简单-试除法判定质数

题目描述

给定 \(n\) 个正整数 \(a_i\),判定每个数是否是质数。

输入格式

第一行包含整数 \(n\)

接下来 \(n\) 行,每行包含一个正整数\(a_i\)

输出格式

\(n\) 行,其中第 i 行输出第 i 个正整数 \(a_i\) 是否为质数,是则输出 Yes,否则输出 No

数据范围

1≤n≤100
1≤\(a_i\)≤231−1

输入样例:

2
2
6

输出样例:

Yes
No

代码:

// 包含输入输出流头文件,用于 cin 和 cout
#include <iostream>
// 这个头文件这里暂时没用到,可以去掉
#include <algorithm>

using namespace std;

// 判断一个数 x 是否是质数的函数
// 质数定义:大于 1,且只能被 1 和自身整除的数
bool is_prime(int x)
{
    // 如果 x 小于 2,一定不是质数
    if (x < 2) return false;
    
    // 优化:只需要循环到 sqrt(x) 即可,i <= x/i 等价于 i <= sqrt(x)
    // 这样可以大幅减少循环次数
    for (int i = 2; i <= x / i; i ++ )
        // 如果 x 能被 i 整除,说明有除了 1 和自身以外的因子,不是质数
        if (x % i == 0)
            return false;
            
    // 循环结束都没找到因子,说明是质数
    return true;
}

int main()
{
    int n;
    // 输入测试数据的组数 n
    cin >> n;

    // 循环 n 次,每次处理一个数字
    while (n -- )
    {
        int x;
        // 输入要判断的数字 x
        cin >> x;
        
        // 调用 is_prime 函数判断是否为质数,输出 Yes / No
        if (is_prime(x)) puts("Yes");
        else puts("No");
    }

    return 0;
}
posted @ 2026-04-09 10:32  CodeMagicianT  阅读(1)  评论(0)    收藏  举报