CCF NOI1142 质数

来源:互联网 发布:android eventbus源码 编辑:程序博客网 时间:2024/06/15 09:51

问题链接:CCF NOI1142 质数




时间限制: 1000 ms  空间限制: 262144 KB

题目描述 

  定义质数为因数只有1和其本身的数,对于n组询问,试判断每个数是否为质数。

输入

  读入第一行一个正整数n,表示有n组询问。
  接下来n行,每行一个正整数m,表示询问m是否为质数,是则输出“yes”,否则输出“no”。

输出

  n行,每行一个字符串,代表答案。

样例输入

3
1
17
51
样例输出

no

yes

no

数据范围限制

  n≤10^3,1<m≤10^10。

提示

 




问题分析

  这是一个数论中的素性判定问题。

  数据量比较少,就用试除法来实现。

程序说明

  (略)

要点详解

  • 使用宏定义可以使得代码可阅读性增强。
  • 数据少时,用试除法进行素性判定,时间上还可以接受。
  • 要根据题意指定的数据范围选用类型。



参考链接:(略)。

100分通过的C语言程序:

#include <stdio.h>#include <math.h>int isprime(long n){    if(n == 1)        return 0;    else if(n == 3)        return 1;    else {        long temp, i;        temp = n % 6;        if(temp != 1 && temp != 5)            return 0;        temp = sqrt(n);        for(i=3; i<=temp; i+=2)            if(n % i == 0)                return 0;        return 1;    }}int main(void){    int n;    long m;    scanf("%d", &n);    while(n--) {        scanf("%ld", &m);        if(isprime(m))            printf("yes\n");        else            printf("no\n");    }    return 0;}



0 0
原创粉丝点击