题目描述
整数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
#include<stdio.h>
#include<math.h>
int prime(int x);
int main()
{
int x,tab=0,h,a,i,n;
scanf("%d",&x);
while(x--){
tab=0;
scanf("%d",&a);
n=sqrt(a);
for(i=2;i<=n;i++){
if(a%i==0){
if(prime(i)==1){
h=a/i;
if(h==i)
break;
else if(prime(h)==1)
tab=1;
}
}
}
if(tab==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
int prime(int x)
{
int i,m=sqrt(x);
if(x==2)
return 1;
else{
for(i=2;i<=m;i++){
if(x%i==0)
return 0;
}
return 1;
}
}