您的位置:首页 > 其它

HDU 2161 Primes

2017-10-13 14:19 337 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2161

 

Primes


Time Limit: 1000/1000 MS
(Java/Others)    Memory
Limit: 32768/32768 K (Java/Others)

Total Submission(s):
3191    Accepted
Submission(s): 1298


[align=left]Problem Description[/align]
Write a program to read in a list of
integers and determine whether or not each number is prime. A
number, n, is prime if its only divisors are 1 and n. For this
problem, the numbers 1 and 2 are not considered primes.

 

 

[align=left]Input[/align]
Each input line contains a single
integer. The list of integers is terminated with a
number<= 0. You may assume that the input contains
at most 250 numbers and each number is less than or equal to
16000.

 

 

[align=left]Output[/align]
The output should consists of one line
for every number, where each line first lists the problem number,
followed by a colon and space, followed by "yes" or
"no".

 

 

[align=left]Sample Input[/align]

1 2 3 4 5
17 0

 

 

[align=left]Sample Output[/align]

1: no 2: no
3: yes 4: no 5: yes 6: yes

 

 

[align=left]Source[/align]

2008 “Sunline Cup” National Invitational Contest - Warm
Up
 

 

[align=left]Recommend[/align]
lcy
 

题意很清楚,就是判断素数。值得注意的是:这个题目中,2不是素数;退出条件是num<=0,而非num==0.
代码如下:
#include<stdio.h>

#include<string.h>

bool prime[16001];

void
zhibiao()               
//打表,效率高

{

 int i,j;

 memset(prime,1,sizeof(prime));

 prime[1]=0;

 for(i=2;i<16001;i++)

 {

  if(prime[i]==1)

   
for(j=2;i*j<16001;j++)

     
prime[i*j]=0;

 }

 prime[2]=0;                   
//这个题目中2不是素数

}

int main()

{

 int num,m=1;

 zhibiao();

 while(scanf("%d",&num)&&num>0)       //退出条件是num<=0 
这地方wrong了一次。。。

 {

  if(prime[num]==1) printf("%d:
yes\n",m++);

   else printf("%d:
no\n",m++);

 }

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: