Pagini recente » Cod sursa (job #854458) | Cod sursa (job #481599) | Cod sursa (job #699530) | Cod sursa (job #644919) | Cod sursa (job #413370)
Cod sursa(job #413370)
// http://infoarena.ro/problema/fractii
#include <stdio.h>
long long count,n,i,k,e,x,p,ok,max,stack[1000000],poz = 1,found = true;
FILE * in = fopen("fractii.in","rt");
FILE * out = fopen("fractii.out","wt");
int main()
{
fscanf(in,"%d",&n);
/*********** Ciurul lui Erathostene **************/
for(i=1;i<=n;i++)
stack[i] = i;
do
{
found = false;
do
x = p = stack[++poz];
while(x == 0 || poz == n);
do
{
p = p + x;
if(stack[p] != 0)
{
stack[p] = 0;
found = true;
}
}
while(p <= n);
}
while( found == true);
/*************************************************/
for(i=1;i<=n;i++)
for(k=1;k<=n;k++)
{
ok = true;
if(i == k && i != 1)
ok = false;
if(ok == true)
if(stack[i] == 0 || stack[k] == 0)
{
if(i % k == 0 && k != 1)
ok = false;
if(k % i == 0 && i != 1)
ok = false;
}
if(ok == true && stack[i] == 0 && stack[k] == 0)
{
if(i > k)
max = i;
else
max = k;
for(e=2;e<=max/2;e++)
if(k % e == 0 && i % e == 0)
{
ok = false;
break;
}
}
if(ok == true)
count++;
}
fprintf(out,"%I64d\n",count);
return (0);
}