三質數

三質數

時間限制:1s   空間:256M

題目描述:

一個數的約數也稱為因子,比如16的因子,26的因子,66的因子。質數只有兩個因子,1和它本身現在定義一種新的質數,三質數,三質數只有三個不同的因子。比如4是三質數,因為它有1,2,4三個因子。比如6不是三質數,因為61,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 fzm(double l){
    int k=(int)l;
    if(k<l){//判斷是否是小數 
        return 0;//是,就不是三質數 
    }else{//不是,那它有幾個因數 
        int temp=0;
        for(int i=1;i<=k;i++){ 
            if(k%i==0){
                temp++;
            }
        }
        return temp;//返回temp個因數 
    }
}
int main(){
    int t=0;
    cin>>t; 
    double n[t+1]={0};
    for(int i=1;i<=t;i++){
        cin>>n[i];
    }
    for(int i=1;i<=t;i++){
        double k=sqrt(n[i]);//平方根 
        int ans=fzm(k);
        if(ans==2){//判斷k是否是素數 
            cout<<"YES"<<endl;
        }else{
            cout<<"NO"<<endl;
        }
    }
}

 

Tags: