B. T-primes1300 / 思维 数论
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B. T-primes1300 / 思维 数论相关的知识,希望对你有一定的参考价值。
https://codeforces.com/problemset/problem/230/B
首先分析一下: 只有三个因子 例如 4 除去1和4 还有一个。我们都知道因子几乎都是一对的出现的,只有平方数是有单个的因子。
故必是一个平方数,且1-sqrt(x) 之间不准有多余的因子。说明了 sqrt(x)是一个质数。
故可以得出结论质数的平方数只有三个因子
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10;
int st[N],prime[N],cnt;
void init()
{
int n=1e6;
for(int i=2;i<=n;i++)
{
if(!st[i]) prime[cnt++]=i;
for(int j=0;prime[j]<=n/i;j++)
{
st[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
bool check(LL x)
{
if(x==1) return false;
LL temp=sqrt(x);
if(temp*temp==x&&!st[temp]) return true;
return false;
}
int main(void)
{
init();
int t; cin>>t;
while(t--)
{
LL n; cin>>n;
if(check(n)) puts("YES");
else puts("NO");
}
return 0;
}
以上是关于B. T-primes1300 / 思维 数论的主要内容,如果未能解决你的问题,请参考以下文章
B. Jzzhu and Sequences1300 / 思维 规律