UVA Problem 406 Prime Cuts Solution

Problem Solving, UVa

 

 

#include <stdio.h>

#include<iostream>

using namespace std;

bool flag[1005];

int primes[1005];

int cnt;

void seive(int n)

{

cnt=0;

primes[cnt++] = 1;

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 n,c,res,hi,lo,m;

    while(cin>>n>>c)

    {

       

        if( n==1)

        {

            printf("%d %d: %d\n\n",n,c,n);

        }

        else

        {

            seive(n);

        if(cnt%2==1)

        {

            res=2*c-1;

        }

         else

        {

            res=2*c;

        }

       

        if(res<=cnt)

        {

            printf("%d %d:",n,c);

            m=(cnt-res)/2;

            for(int i=0;i<res;i++)

           

            printf(" %d",primes[m++]);

            printf("\n\n");

        }

   

        else

        {

            printf("%d %d:",n,c);

            for(int j =0;j<cnt;j++)

           

                 printf(" %d",primes[j]);

                     printf("\n\n");

           

        }





        /*{

        hi=2*c;

        lo=2*c + 2;

        for( int i=hi;i<=lo;i++)

        {

            cout<<primes[i] ;

        }

        cout<<"\n";   

    }*/

   

       

        }

    }

    return 0;

}

 

0 Comments

You may find interest following article