Description
判断一个正整数n的约数个数是否为p,其中p是素数。
Input
第一行给测试总数T(T <= 10000)。
接下来有T行,每行有两个数字n(1 <= n <= 1000000000)和p(2 < p <= 1000000000)。Output
每组测试数据输出一行,如果n的约数个数是p,输出“YES”,否则输出“NO”。
#include<stdio.h>
#include<math.h>
int main()
{
int t,n,p;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&p);
int i,num=0;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
num+=2; //每一次整除有两个因子,被除数和商
if(i*i==n)
num--; //被除数和商相同,num只加一次
}
if(n==1)
num++; //1的因子只有本身
else
num+=2; //包含1和n本身
if(num==p)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}