CCF NOI1142 质数
问题链接: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;
}
浙公网安备 33010602011771号