Pagini recente » Cod sursa (job #54127) | Cod sursa (job #2508113) | Cod sursa (job #250310) | Cod sursa (job #2113055) | Cod sursa (job #975395)
Cod sursa(job #975395)
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int Putere(int x, int n)
{
int p = 1 ;
while (n > 0)
{
if (n & 1) // n este impar
{
p *= x;
n-- ;
}
x = x * x ;
n >>= 1 ; // sau n = n / 2
}
return p ;
}
int euler( int a)
{
int i=2 ,nr,no=1;
while ( a != 1 )
{
nr = 0 ;
while ( a % i == 0 ){
a = a / i;
nr++;
}
if ( nr != 0)
no *= (i-1)* Putere(i,nr-1);
i++;
}
return no;
}
int main()
{
FILE *fs = fopen("fractii.in","rt");
FILE *gs = fopen("fractii.out","wt");
if (fs == NULL) return -1;
int nr,i,no;
if (fscanf (fs,"%i",&nr) == 1 )
{
no = nr*(nr-1) + 1 ;
if (nr <=0 ) fprintf(gs,"%i",0);
else if ( nr == 1) fprintf (gs,"%i",1);
else {
for ( i =2 ; i <= nr; i++)
{
no = no - 2*(i-euler(i)-1);
}
fprintf (gs,"%i",no);
}
}
fclose(fs);
fclose(gs);
return 0;
}