Description
我們下面來研究整數性質,我們知道質數只有1和自身兩個因子,合數至少有除了1和自身的其他因子,我們也知道“貓老大數”是隻能分解成兩個質數乘積形式的數,那麼能分解成兩個合數的數呢?我們稱之爲“牛數”。下面編程判斷整數是否爲“牛數”。
Input
第一行爲t(1≤t≤100),表示測試數據組數。
接下來t行,每行一個正整數x。
Output
對於每個輸入數據x,判斷它是否爲“牛數”,並輸出一行字符串:如果它是“牛數”,輸出“cow”,否則輸出“no”。
Sample Input
Sample Output
HINT
60%的數據:1≤x≤109
100%的數據:1≤x≤1012
#include<stdio.h>
long long cow,flag;
int n,p[100001],cnt,idx;
int isprime[1000001];
void prime()
{
for(int i=2;i<1000000;i++)
{
if(!isprime[i])
p[cnt++]=i;
for(int j=0;j<cnt&&p[j]*i<1000000;j++)
{
isprime[i*p[j]]=1;
if(i%p[j]==0)
break;
}
}
}
int main()
{
scanf("%d",&n);
prime();
for(int j=1;j<=n;j++)
{
flag=0;
scanf("%lld",&cow);
idx=0;
for(int i=0;(long long)p[i]*p[i]<=cow;i++)
{
while(cow%p[i]==0)
{
if(idx>=3)
break;
idx++;
cow/=p[i];
}
if(idx==3&&cow!=1)
{
printf("cow\n");
flag=1;
break;
}
if(cow==1&&cow<4)
{
printf("no\n");
flag=1;
break;
}
}
if(flag==0)
printf("no\n");
}
}