Gym - 101243G Sphenic numbers【数学】

    xiaoxiao2021-03-25  137

    题目链接:https://vjudge.net/problem/Gym-101243G 题意:给你一个数字,让你判断这个数字是否有3个不相等的素数相乘而组成 解析:打一个素数表,然后就扫一遍判断即可

    #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<string> #include<bitset> #include <vector> using namespace std; const int maxn=(10467397)/6; int prime[maxn+100]; int pr[maxn+100]; int cnt; void getprime() { for(int i=2;i<=maxn;i++) { if(!prime[i]) { pr[cnt++]=i; for(int j=2*i;j<=maxn;j+=i) prime[j]=1; } } } int main() { freopen("Input.txt","r",stdin); freopen("Output.txt","w",stdout); cnt=0; getprime(); //cout<<cnt<<endl; int flag=0; int n; cin>>n; int ct=0; for(int i=0;i<cnt;i++) { if(n%pr[i]==0) { ct++; n/=pr[i]; } if(n%pr[i]==0) { flag=1; break; } } if(ct==3&&!flag&&n==1) printf("YES\n"); else printf("NO\n"); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-20072.html

    最新回复(0)