函数fun是根据输入n,求下面分母为n以内(包含n)的素数构成的数列的和 :s=1/2-2/3+3/5-4/7+5/11-...,输入10,输出:-0.138095。
要求在/Begin/和/End/之间编写程序,其它部分不得增删语句。
#include<stdio.h>
#include<stdlib.h>
double fun(int n)
{
/Begin/
/End/
}
int main()
{
int n;
double s,x;
FILE *in,*out;
printf("输入n:");
scanf("%d",&n);
s=fun(n);
printf("%lf\n",s);
in=fopen("in2019-2-1-2.dat","r");
out=fopen("out2019-2-1-2.dat","w");
while(!feof(in))
{
fscanf(in,"%d",&n);
fprintf(out,"%lf\n",fun(n));
}
system("pause");
供参考:
#include<stdio.h>
#include<stdlib.h>
double fun(int n)
{
/*Begin*/
int i, j, k = 1, t = 1;
double s = 0;
if (n < 2) return s;
for (i = 2; i <= n; i++)
{
for (j = 2; j < i; j++)
if (i % j == 0) break;
if (i == j) {
s += t * k * 1.0 / i;
k++;
t *= -1;
}
}
return s;
/*End */
}
int main()
{
int n;
double s, x;
FILE* in, * out;
printf("输入n:");
scanf("%d", &n);
s = fun(n);
printf("%lf\n", s);
in = fopen("in2019-2-1-2.dat", "r");
out = fopen("out2019-2-1-2.dat", "w");
while (!feof(in))
{
fscanf(in, "%d", &n);
fprintf(out, "%lf\n", fun(n));
}
system("pause");
return 0;
}
供参考
#include<stdio.h>
#include<stdlib.h>
double fun(int n)
{
double num = 0;
int number=1;
int j=2;
if(n<2)
{
return 0;
}
for(int i=2;i<=n;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
num+=(number%2==0?-(double)number/(double)(i):(double)number/(double)(i));
number++;
}
}
return num;
}
int main()
{
int n;
double s,x;
FILE *in,*out;
printf("输入n:");
scanf("%d",&n);
s=fun(n);
printf("%lf\n",s);
in=fopen("in2019-2-1-2.dat","r");
out=fopen("out2019-2-1-2.dat","w");
while(!feof(in))
{
fscanf(in,"%d",&n);
fprintf(out,"%lf\n",fun(n));
}
system("pause");
}