题意就是让我们找一个数只能有三个约数,很明显素数有两个,那么容易找到规律,这个数只能有着三个约数。1和自己还有sqrt(n)。sqrt(n)自然要是素数

来源:互联网 发布:电脑没有usb打印端口 编辑:程序博客网 时间:2024/05/17 07:09
题意就是让我们找一个数只能有三个约数,很明显素数有两个,那么容易找到规律,这个数只能有着三个约数。1和自己还有sqrt(n)。sqrt(n)自然要是素数。 #include<bits/stdc++.h>using namespace std;const int maxn=400;const int max1=100000+10;bool vis[maxn];int a[max1];int main(){    int t;    scanf("%d",&t);    int ca=1;    memset(vis,false,sizeof(vis));    vis[0]=vis[1]=true;    for(int i=2;i<=maxn;i++)        if(!vis[i]){            for(int j=i*i;j<=maxn;j+=i)                vis[j]=true;        }    while(t--)    {        int n;        scanf("%d",&n);        for(int i=0;i<n;i++)            scanf("%d",&a[i]);        for(int i=0;i<n;i++)        {            if(i==0)printf("Case #%d:\n",ca++);            int y=sqrt(a[i]);            if(a[i]!=1&&y*y==a[i]&&!vis[y])printf("YES\n");            else printf("NO\n");        }    }}
0 0
原创粉丝点击