[ create a new paste ] login | about

Link: http://codepad.org/Z5EmjLTF    [ raw code | output | fork ]

C, pasted on Feb 1:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define search(key, a, n) bsearch(key, a, n, sizeof(int), compare);
#define sort(a, n) qsort(a, n, sizeof(int), compare);
#define FOR(i, a, n) for(i = a; i < n; i++)
#define loop(i, n) FOR(i, 0, n)
typedef long long ll;

void swap(int *a, int *b)
{
        int *temp;
        *temp = *a;
        *a = *b;
        *b = *temp;
}

int min(int a, int b)
{
        if(a > b)
                return b;
        return a;
}

int max(int a, int b)
{
        if(a > b)
                return a;
        return b;
}

int gcd(int a, int b)
{
        return(b == 0 ? a : gcd(b, a%b));
}

int compare (const void * a, const void * b)
{
        return ( *(int*)a - *(int*)b );
}

int findNextCoin(int n, int * primes)
{
        int i = 0, j;
        //printf("%d %d", n, primes[i]);
        while(n % primes[i] != 0 && n > primes[i])
        {
                //printf("%d\n", primes[i]);
                i ++;
        }
        printf("%d ", n / primes[i]);
        return n / primes[i];
}

int main()
{
        int n, i, a[1000001], primes[100000], j = 0, k;
        scanf(" %d", &n);
        for(i = 2; i <= 1000000; i ++)
        {
                if(a[i] == 0)
                {
                        primes[j] = i;
                        j ++;
                        for(k = 2 * i; k <= 1000000; k += i)
                                a[k] = 1;
                }
        }
        /*loop(i, 10)
                printf("%d\n", primes[i]);*/
        printf("%d ", n);
        while(n > 1)
        {
                n = findNextCoin(n, primes);
        }
        return 0;
}


Output:
1
0 


Create a new paste based on this one


Comments: