Cod sursa(job #378192)

Utilizator LauraTudorTudor Laura LauraTudor Data 27 decembrie 2009 21:31:47
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<stdio.h>
int n,i,j,fractii,count,k,p,sgn[100],prel[100],final,m,l1,l2,gasit,q;

int main(){
	int prim[100];
	prim[0]=2;
	prim[1]=3;
	prim[2]=5;
	prim[3]=7;
	prim[4]=11;
	prim[5]=13;
	prim[6]=17;
	prim[7]=19;
	prim[8]=23;
	prim[9]=29;
	FILE *fin;
	fin=fopen("fractii.in","rt");
	fscanf(fin,"%d",&n);
	fractii=n*n;
	for(i=2;i<=n;i++){
		count=0;k=1;
		for(j=0;j<50;j++)
		{
			sgn[j]=0;prel[j]=0;
		}
		for(j=0;j<10;j++)
			if(i%prim[j]==0){
				sgn[count]=-1;
				prel[count]=prim[j];
				fractii=fractii+(n/prel[count])*sgn[count];
				count++;
			}
		final=count;
		l1=0;l2=count;
		while(k!=count){
			k++;
			printf("\n%d\n",k);
			for(m=l1;m<l2;m++)
				for(j=0;j<count;j++)
					if(prel[m]%prel[j]!=0){
						gasit=0;
						for(q=l2-1;q<final;q++)
							if(prel[j]*prel[m]==prel[q])
								gasit=1;
						if(!gasit){

							prel[final]=prel[j]*prel[m];
							if(k%2==0)
								sgn[final]=1;
							else
								sgn[final]=-1;
							fractii=fractii+(n/prel[final])*sgn[final];
							final++;
						}
					}
			l1=l2;
			l2=final;
		}
	}
	FILE *fout;
	fout=fopen("fractii.out","wt");
	fprintf(fout,"%d",fractii);
	return 0;
}