UVA Problem 10852 Solution

Problem Solving, UVa

#include <stdio.h>

#include<iostream>

#include<math.h>

#define MAX 10001

using namespace std;

bool flag[MAX];

int primes[MAX];

int cnt;



void sieve(int n)

{

cnt=0;

primes[cnt++] = 2;

for(int i=3; i<=n; i+=2)

{

if(flag[i] == 0)

{

primes[cnt++] = i;

if(i <= n/i)

{

for(int j=i*i; j<=n; j+=i*2)

flag[j] = 1;

}

}

}

return ;

}

int main()

{

    int tc, n;

   

    sieve(MAX);

   

    scanf("%d",&tc);

    while ( tc-- )

    {

        scanf("%d",&n);

        int ans = primes[0];

        for (int i=0; i<cnt && primes[i]<=n; i++)

            if ( n % primes[i] > n % ans )

            printf("v=%d\tm=%d\n",n % primes[i],n % ans);

                ans = primes[i];

       /// printf("%d\n",ans);

    }

   

    return 0;

}

 

0 Comments

You may find interest following article