Sphenic numbers质因数分解

来源:互联网 发布:深泉学院知乎 编辑:程序博客网 时间:2024/05/23 01:15

https://odzkskevi.qnssl.com/415c275cb0a15fcb4ede21b8cb5297de?v=1488850248

2016-2017 ACM中部地区的俄罗斯四分之一决赛编程比赛
G.施尼希数
小学生瓦西亚对区分素数的问题感兴趣。 他
已决定开发自己的测试方法。
不幸的是,新算法有一个缺陷 - 它产生假阳性输出
在具有所谓的蝶形数的情况下。 对于那些不知道的人:sphenic
数字是三个不同质数的乘积。
帮助Vasya写一个程序来区分sphenic数字。
Inut
输入文件包含单个数字 - 整数n。
限制
30≤n≤10467397。
输出
输出文件必须包含一行具有值“YES”(不带引号)的行
标记),如果数字n是罗真的,或者如果不是,则为“否”。
例子
Input.txt Output.txt
30   YES
40    NO
10467397   YES

#include<cstdio>#include <iostream>#include <cmath>#include <cstring>#define ll long long#define maxn 10467397using namespace std;int get_num(int n){    int cnt=0;    for(int i=2;i<=sqrt((double)n);i++)    {        if(n%i==0) cnt++;        while(n%i==0)        {            n=n/i;        }    }    if(n>1) cnt++;    return cnt++;}int main(){    freopen("input.txt","r",stdin);    freopen("output.txt","w",stdout);    int n;    while(cin>>n)    {       int flag=get_num(n);       if(flag==3)cout<<"YES"<<endl;       else cout<<"NO"<<endl;    }    return 0;}


0 0
原创粉丝点击