sgu 113 Nearly prime numbers

来源:互联网 发布:美国最新非农数据分析 编辑:程序博客网 时间:2024/05/17 02:32

给一个数,看其是否能分解为两个质数相乘的形式。


可以直接枚举数m的因子i,看其是否为质数,然后判断m/i是否也为质数即可。

或者可以预先打表筛出35000内的质数,然后枚举。


#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;bool isprime(int x){    if(x==2) return 1;    if(x%2==0) return 0;    for(int i=3;i*i<=x;i+=2)    {        if(x%i) continue;        return 0;    }    return 1;}int main(){    int n,m;    scanf("%d",&n);    while(n--)    {        scanf("%d",&m);        int i,flag=0;        for(i=2;i*i<=m;++i)            if(isprime(i)&&m%i==0&&isprime(m/i)) {flag=1;break;}        if(flag) puts("Yes");        else puts("No");    }    return 0;}


0 0