注意:
判断一个数是否是素数,为什么除到其平方根就可以了?
因为如果一个数不是素数是合数,
那么一定可以由两个自然数相乘得到,
其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。
题目描述
依然是给你一个数,让你判断一下这个数是不是一个素数。
输入
第一行为一个N,表示有N个数,接下来N行每行有一个正整数x。(1<=N<=100,1<=x<=100000000000)
输出
对于每一个x,如果他是一个素数 ,那么输出YES,否则输出NO
样例输入
3
2
3
5
样例输出
YES
YES
YES
提示
注意范围哟!
#include<stdio.h>
#include<math.h>
typedef long long ll;//tpyedef 给类型起别名
int isprime(ll x) {
ll M=sqrt(x);
if(x==1) {
return 1;
} else
for(ll i=2; i<=M; i++) {
if(x%i==0) {
return 0;
}
}
return 1;
}
int main() {
ll x;
int n,i;
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%lld",&x);
if(isprime(x)) {
printf("YES\n");
} else printf("NO\n");
}
return 0;
}