时间限制:1s 空间:256M
题目描述:
一个数的约数也称为因子,比如1是6的因子,2是6的因子,6是6的因子。质数只有两个因子,1和它本身现在定义一种新的质数,三质数,三质数只有三个不同的因子。比如4是三质数,因为它有1,2,4三个因子。比如6不是三质数,因为6有1,2,3,6四个因子。现在有一些数,你需要判断他们是不是三质数。
输入格式:
第一行一个整数T,表示有T组测试数据。每组测试数据输入一个整数n
输出格式:
对于每组测试数据,判断是否是三质数,如果是输出YES,否则输出NO
样例输入:
3
4
5
6
样例输出:
YES
NO
NO
约定:
1<=n<=1012,数据组数不超过103
解题分析
例如121:1,11,121 121只有三个质数 121=112
由此可以看出素数的平方就是三质数,也就是说某数的平方根是素数,它就是三质数
代码如下
#include<bits/stdc++.h> using namespace std; int fzmdouble l){ int k=int)l; ifk<l){//判断是否是小数 return 0;//是,就不是三质数 }else{//不是,那它有几个因数 int temp=0; forint i=1;i<=k;i++){ ifk%i==0){ temp++; } } return temp;//返回temp个因数 } } int main){ int t=0; cin>>t; double n[t+1]={0}; forint i=1;i<=t;i++){ cin>>n[i]; } forint i=1;i<=t;i++){ double k=sqrtn[i]);//平方根 int ans=fzmk); ifans==2){//判断k是否是素数 cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } } }