// algebraicSumOfPrime.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <math.h>
#include <string.h>

bool isPrime(int num)
{
	if(num<=1)return false;
	if(num==2)return true;
	if(num%2==0)return false;
	//下面检验大于2的奇数
	for(int i=3;i<=sqrt(num);i+=2)
	{
		if(num%i==0)
			return false;
	}
    return true;
}


int main(int argc, char* argv[])
{
	int n,k,k1,k2,a[3000];
	double s,s2,smax,mi;
	printf("输入整数n(<3000):");
	scanf("%d",&n);
	getchar();
	memset(a,0,sizeof(a));
	for(k=2;k<=n+1;k++)
	{
		if(isPrime(2*k-1))
			a[k]=1;
	}
	s=0;smax=0;mi=10;
	for(k=1;k<=n;k++)
	{
		if(a[k]+a[k+1]==1)
			s+=(double)(2*k-1)/(double)(2*k+1);
		else
			s-=(double)(2*k-1)/(double)(2*k+1);
		if(s>smax)
		{
			smax=s;
			k1=k;
		}
		if(fabs(s)<mi)
		{
			mi=fabs(s);
			k2=k;
			s2=s;
		}
	}
	//

	
	printf("s(%d)=%.5lf \n",n,s);
	printf("当k=%d 时 s有最大值:%.5lf \n",k1,smax);
	printf("当k=%d 时 s=%.5lf 最接近0.\n",k2,s2);
	return 0;
}