/*CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C C
C COMPUTE SUM OF M(X/I) AND DETERMINE SIGN CHANGES OF M(X/I) C
C 06/02/14 (DKC) C
C C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC*/
#include <stdio.h>
#include <math.h>
unsigned int euler(unsigned int a);
double mertens1(unsigned int);
void main() {
unsigned int N,MAXN;
unsigned int i,index;
double sum,msum,max,temp,msave;
FILE *Outfp;
Outfp = fopen("out1b7.dat","w");
MAXN=1280;
for (N=2; N<=MAXN; N++) {
sum=0.0;
max=0.0; // maximum
index=0; // index of maximum
for (i=1; i<=N; i++) {
msum=mertens1(N/i);
if (i==1)
msave=msum;
if ((i>1)&&(i<=(N/2))) {
if (msum>0.0) {
printf("positive value: N=%d, index=%d, msum=%e, msave=%e \n",N,i,msum,msave);
fprintf(Outfp,"positive value: N=%d, index=%d, msum=%e, msave=%e \n",N,i,msum,msave);
// break;
}
}
sum=sum+msum;
temp=msum; // find maximum
if (temp<0.0)
temp=-temp;
if (temp>max) {
max=temp;
index=i;
}
temp=euler(i);
if ((temp/4)*4!=temp)
sum=sum+msum*(double)i/(double)temp;
// printf(" %d %d %e %e \n",i,N/i,msum,sum);
// fprintf(Outfp," %d %d %e %e \n",i,N/i,msum,sum);
}
// printf("N=%d, index=%d, max=%e, sum=%e \n",N,index,max,sum);
// fprintf(Outfp,"N=%d, index=%d, max=%e, sum=%e \n",N,index,max,sum);
// fprintf(Outfp," %e\n",sum);
}
fclose(Outfp);
return;
}