Pagini recente » Cod sursa (job #733943) | Cod sursa (job #659058) | Cod sursa (job #1640505) | Cod sursa (job #182150) | Cod sursa (job #1366849)
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int vprim[1000000];
long S;
void Afisare_Vector(int v[],long dim){
for(long i=1;i<=dim;i++)
printf("%d - %s\n ",i, ( v[i]==-1 ? "NP" :"ESTE PRIM" ) ) ;
printf("\n");
}
bool Prim(long nr){
if(nr==1)
return false;
for(long i=2; i<=sqrt(nr); i++){
if(nr%i==0)
return false;
}
return true;
}
void Eratostene(long n){
long i=2,j;
vprim[1]=-1;
while(i<=n){
if(vprim[i]==0){
( Prim(i)==true ? vprim[i]=1 : vprim[i]=-1 );
for(j=i+i; j<=n; j+=i)
vprim[j]=-1;
}
i++;
}
}
long CMMDC(long a, long b){
if(a%2==0 && b%2==0){
return 2;
}
long r;
r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
if(b==1) {
return 0;
}
else{
return b;
}
}
bool Prime_intre_ele(long a, long b){
if(CMMDC(a,b)==0)
return true;
return false;
}
int main()
{
long n;
FILE *f=fopen("fractii.in","r");
FILE *g=fopen("fractii.out","w");
fscanf(f,"%d",&n);
cin>>n;
Eratostene(n);
S=n;
for(long i=2;i<=n;i++)
{
if(vprim[i]==1){
S=S+n-(n/i);
}
else {// i nu este prim
S++;
for(long j=2;j<=n;j++){
if(vprim[j]==1){
if((i%j!=0) && (j%i!=0)){
S++;
}
}
else {// j nu este prim
if(Prime_intre_ele(i,j)){
S++;
}
}
}
}
}
printf(" S=%d ",S);
fprintf(g,"%d",S);
fclose(f);
fclose(g);
return 0;
}