题目:
Description
给出一个数,判定这个数是否是素数
Input
第一行读入一个整数T,表示有T组数据。(1<=T<=20)
每组数据读入一个整数n(1<=n<=1000000)。
Output
如果n是素数,输出"Yes",否则"No"
Sample Input
2
2
1
Sample Output
Yes
No
问题分析:
因为这道题比较简单,打了几行注释而已。
主要就是先认为这个数是素数,然后循环看能不能被整除,若能则不是素数,然后只需循环到n的算术平方根即可,不需要到n-1,证明省略。
注意格式问题,记得\n回车
AC代码:
#include <stdio.h>
#include <stdbool.h>
//判断函数
int i;
bool judge ( int n )
{
if ( n==1 )
return 0;
for ( i=2; i<=sqrt(n); i++ )
if ( n%i==0 )
return 0;
return 1;
}
int main()
{
int t;
int n;
scanf ( "%d", &t );
while ( t-- )
{
//注意每次要让isprime归1重置
int isprime = 1;
scanf ( "%d", &n );
if ( judge(n) )
printf ( "Yes\n" );
else
printf ( "No\n" );
}
}