感觉还不错的一个算法题:
写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数。
我的解题方法:
01.
#include<stdio.h>
02.
#include<math.h>
03.
#define max 1000000
04.
int
a[max]={0};
05.
void
yun()
06.
{
07.
int
i,j;
08.
for
(i=2;i<=(
int
)
sqrt
(max);i++)
09.
{
10.
if
(a[i]==0)
11.
for
(j=i+i;j<=max;j+=i)
12.
a[j]=1;
13.
}
14.
}
15.
int
main()
16.
{
17.
int
n,m,i;
18.
yun();
19.
scanf
(
"%d"
,&n);
20.
while
(n--)
21.
{
22.
int
k=0;
23.
scanf
(
"%d"
,&m);
24.
if
(m>=3)
25.
{
26.
for
(i=3;i+2<=m;i+=2)
27.
if
(a[i]==0&&a[i+2]==0)
28.
k++;
29.
printf
(
"%d\n"
,k+1);
30.
}
31.
else
32.
printf
(
"0\n"
);
33.
}
34.
return
0;
35.