1971-判断素数

来源:互联网 发布:电信宽带免费提速软件 编辑:程序博客网 时间:2024/06/06 05:02

【C系列4.3】函数训练之素数判断(预处理篇) 1971

Time Limit:  1 s      Memory Limit:   32 MB
Submission:473     AC:86     Score:21.74

 

Description

cyn小朋友昨天刚学了素数的判断,结果今天他就忘了,你能帮他完成老师给他布置的素数判断作业吗?(主函数代码部分已经固定,请按需写函数部分,如果提交的不是c语言则需要写全部代码)

#include<stdio.h>#include<string.h>#include<math.h>int isPrime[1000011];void getprime();int main(){    int t;    scanf("%d",&t);    getprime();    while(t--)    {        int n;        scanf("%d",&n);        if(isPrime[n])        {            printf("YES\n");        }        else        {            printf("NO\n");        }    }    return 0;} 


Input


第一行输入一个T,表示有T组数据。
接下来T行,每行只有一个整数n(1 <= n <= 1000000),代表你需要验证的整数。

Output

对于每一个n,若是素数就输出“YES”,否则输出“NO”

Samples

input:
4
1
2
3
4
output:
NO
YES
YES
NO

Hint

 大数据请用scanf与printf读入和输出。本题目涉及全局变量和数组的知识,可以先预习数组章节再完成本题。


下附AC代码:

#include<stdio.h>#include<string.h>#include<math.h>#define MAXV 1000011int isPrime[MAXV + 1];int prime[MAXV + 1]; int size=0; void getprime();int main(){    int t;    scanf("%d",&t);    getprime();    while(t--)    {        int n;        scanf("%d",&n);        if(isPrime[n])        {            printf("YES\n");        }        else        {            printf("NO\n");        }    }    return 0;}void getprime() {int i, j, k, n;isPrime[1] = 0;for (i = 2; i <= 1000000; i++) {k = sqrt(i);for (j = 2; j <= k; j++) {if (0 == i % j)break;}if (j > k)isPrime[i] = 1;elseisPrime[i] = 0;}}

原题链接:http://acm.hznu.edu.cn/OJ/problem.php?cid=1092&pid=4

原创粉丝点击