• Sicily T-primes


    Description
    We know that prime numbers are positive integers that have exactly two distinct positive divisors. 

    Similarly, we'll call a positive integer t Т-prime, if t has exactly three distinct positive divisors。

    You are given an array of n positive integers. For each of them determine whether it is Т-prime or not.

    Input
    The first line contains a single positive integer, n (1?≤?n?≤?10000),showing how many numbers are in the array. 

    The next line contains n space-separated integers xi (1?≤?xi?≤?10^12).

    Output
    Print one line: The number of T-primes number

    Sample Input
     Copy sample input to clipboard
    3
    4 5 6
    Sample Output
    1
    Hint
    Please use long long instead of int for any Xi.

    The given test has three numbers. 

    The first number 4 has exactly three divisors — 1, 2 and 4. 

    The second number 5 has two divisors (1 and 5), 

    The third number 6 has four divisors (1, 2, 3, 6),

    hence the answer for them is 1 (only the number 4 is T-primes number).

    思路:题就是判断一个数是否仅含有3个因子,其实也就是除了1和它自身外,还存在另一个因子。如果找到这个另外的因子就输出yes,否则为no。数据范围1e15,不小了 ,

    一个数n是T素数,一定是1,n,sqrt(n),且sqrt(n)为素数

    也就是如果一个数是素数的平方,那么这个数有且仅有三个因子。

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n,i,j;
    	long long a,b;
    	cin>>n;
    	for(i=1;i<=n;i++)
    	{
    		cin>>a;
    		b = sqrt(a);
    		for(j=2; j*j <= b; j++) {	
    			if(b%j == 0){ 
    				break;  //判断根号后的a即b是不是素数
    			}
    		}
    		if(j*j > b && b*b == a && a>1){
    			cout<<"YES"<<endl;
    		}
    		else{
    			cout<<"NO"<<endl;
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    拓扑排序笔记
    最小生成树——垃圾佬抓宠物
    次小生成树
    关于 海平面上升 与 fold的毒瘤题(easy) 的思考
    看正月点灯笼老师的笔记—01背包
    欧拉图的判定欧拉路的求法
    离散实验——关系闭包运算
    Floyd 求最短路
    离散实验——二元关系及其性质
    最小生成树
  • 原文地址:https://www.cnblogs.com/clb123/p/10391598.html
Copyright © 2020-2023  润新知