这是微软的一个题目,放来这里看看大家的算法如何
这个写得可能麻烦了,F(10000)得花5秒才可以算出来
[CODE]
#include "stdio.h"
#include "conio.h"
#include "math.h"
long Prime(long );
void main()
{
int count,j=1,k;
long i,sum=0;
scanf("%d",&count);
for(i=2;j<=count;i+=k)
if( Prime(i) )
{
sum+=Prime(i);
j++;
k= i==2?1:2;
}
printf("F(%d)=%ld\n",count,sum);
getch();
}
long Prime(long i)
{
long j;
j=sqrt(i);
while(j>=2&&i%j!=0)
j--;
return j<2 ? i : 0;
}
[/CODE]
[此贴子已经被作者于2006-4-3 5:51:34编辑过]
这个写得可能麻烦了,F(10000)得花5秒才可以算出来
[CODE]
#include "stdio.h"
#include "conio.h"
#include "math.h"
long Prime(long );
void main()
{
int count,j=1,k;
long i,sum=0;
scanf("%d",&count);
for(i=2;j<=count;i+=k)
if( Prime(i) )
{
sum+=Prime(i);
j++;
k= i==2?1:2;
}
printf("F(%d)=%ld\n",count,sum);
getch();
}
long Prime(long i)
{
long j;
j=sqrt(i);
while(j>=2&&i%j!=0)
j--;
return j<2 ? i : 0;
}
[/CODE]
哈哈,又见到版主大人了
非常感激