[数学知识][质数]试除法判定质数 原创
题目简介
给定n个正整数ai,判定每个数是否是质数。
算法标签
数学知识、质数、试除法
输入格式
第一行包含整数n。
接下来n行,每行包含一个正整数ai。
输出格式
共n行,其中第 i 行输出第 i 个正整数ai是否为质数,是则输出“Yes”,否则输出“No”。
数据范围
1≤n≤100,
1≤ai≤2∗109
输入样例:
2
2
6
输出样例:
Yes
No
思路
质数的定义是 如果一个数字只能被自身和整除就表明是质数。
换言之,我们要判定一个数是质数,只用判断从2到n-1是否能整除n即可,如果能整除,则表明不是
又因为质数的因数都是成对出现,例如 n=12,d=3,
具有n/d=4 n/d|n==0的特性,d和n/d都能被n整除
因此我们枚举因数时只需要枚举较小的那一个,满足 d<=n/d
即可
AC代码
#include<iostream>
using namespace std;
bool is_prime(int n)
{
if(n<2)return false;
for(int i=2;i<=n/i;i++)if(n%i==0)return false;
return true;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int t;
cin>>t;
if(is_prime(t))cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】