题目描述
整数n=p*q,p和q为质数,且p≠q,我们称n为D-Prime,请写个程序判断一个数是不是D_Prime。
输入
第一行是一个整数K,表示样例的个数。以后每行是一个整数x,(1 ≤ x ≤ 100,000,000);
输出
每行输出一个样例的结果,如果是输出“Yes”,否则输出“No”。
样例输入
4 30 121 21 12
样例输出
No No Yes No
AC代码
#include<stdio.h>
int Prime(int n){ //素数判断
int i,flag=1;
for(i=2;i*i<=n;i++){
if(n%i==0){
flag=0;
break;
}
}
return flag;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,t,i,flag=0;
scanf("%d",&n);
for(i=2;i*i<=n;i++){
if(n%i==0){
t=n/i;
if(Prime(t)==1&&Prime(i)==1&&t!=i){
flag=1;
break;
}
}
}
if(flag)printf("Yes\n");
else printf("No\n");
}
}
如果用埃筛算法判断素数,数组太大会造成超时错误或内存溢出问题,用 long long 类型也会超时,悲