1139 D_Prime

D_Prime

1、题目内容

Description
题目描述
整数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

2、题目分析

这个题目有个小地方特别坑,就是在判断素数的时候,我们尽量用乘就用乘,不要用开平方,乘比开平方要省时间。对D_Prime的判定,我们主要抓住第一个两个数不可以相等,另外,都要为素数。

3、参考代码

#include<stdio.h>
#include<math.h>
int judge(int x) //判断一个数是否为素数 
{
	if(x==1) return 0;
	for(int i=2;i*i<=x;i++)
	{
		if(x%i==0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int k;
	scanf("%d",&k);
	while(k--)
	{
		int flag=0;
		int x;
		scanf("%d",&x);		
		for(int i=2;i*i<x;i++) //最坑的地方就是这,采用开方绝对会错 
		{
			if((x%i==0)&&judge(i)&&judge(x/i)) //这是判断语句,注意次序 
			{
				flag=1;
				break;
			}
		}
		if(flag) printf("Yes\n");
		else     printf("No\n");
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/weixin_42987451/article/details/83116756