Ejemplo n.º 1
0
int main() {
	int nSol, nDivs, i;
	long long nNumber;

	ComputePrimes();

	while (scanf("%lld", &nNumber), nNumber) {
		nSol = -1; nDivs = 0;

		if (nNumber < 0)
			nNumber = -nNumber;
		
		for (i = 0; i < nrp && nNumber >= (long long)primes[i] * primes[i]; i++)
			if (!(nNumber % primes[i])) {
				nSol = i;
				nDivs++;

				do {
					nNumber /= primes[i];
				} while (!(nNumber % primes[i]));
			}

		if (nSol != -1)
			if (nNumber > 1)
				printf("%lld\n", nNumber);
			else if (nDivs > 1)
				printf("%d\n", primes[nSol]);
			else
				printf("-1\n");
		else 
			printf("-1\n");
	}

	return 0;
}
Ejemplo n.º 2
0
int main() {
	char szLine[128];
	unsigned int n, i, nrdiv, pow, lim;

	ComputePrimes();

	while (1) {
		gets(szLine);
		n = AtoUINoSgn(szLine);
		if (!n)
			return 0;

		nrdiv = 1;
		lim = sqrt(n);
		for (i = 0; n > 1 && primes[i] <= lim && nrdiv & 0x1; i++) {
			pow = 0;
			while (!(n % primes[i])) {
				n /= primes[i];
				pow++;
			}

			nrdiv *= pow + 1;
		}

		if (n != 1)
			nrdiv *= 2;

		if (nrdiv & 0x1)
			printf("yes\n");
		else
			printf("no\n");
	}

	return 0;
}
Ejemplo n.º 3
0
int main() {
	int n, k, i, j, aux;

	ComputePrimes();

	while (scanf("%d %d", &n, &k), n || k) {
		/* if (n < k) {
			printf("0\n");
			continue;
		} */

		n += k - 1;
		k--;

		memset(power, 0, sizeof(power));
		for (i = k + 1; i <= n; i++) {
			aux = i;

			for (j = 0; j <= nrp && aux != 1; j++) {
				while (aux && !(aux % primes[j])) {
					power[j]++;
					aux /= primes[j];
				}
			}
		}

		for (i = 1; i <= n - k; i++) {
			aux = i;

			for (j = 0; j <= nrp && aux != 1; j++) {
				while (aux && !(aux % primes[j])) {
					power[j]--;
					aux /= primes[j];
				}
			}
		}

		aux = 1;
		for (i = 0; i < nrp; i++)
			for (j = 0; j < power[i]; j++) {
				aux *= primes[i];
				aux %= 1000000;
			}

		printf("%d\n", aux);
	}
	return 0;
}
Ejemplo n.º 4
0
int main()
{
	long primes[NUMPRIMES];
    int numPrimes;
    int x;
    numPrimes = ComputePrimes(primes, NUMPRIMES);
 
    printf("Found %d primes. \n\n", numPrimes);
    for (x=0;x<numPrimes;x++)
    {
        char whitespace = (x+1) % 10 == 0 ? '\n' : '\t';           
        printf("%3d%c", primes[x],whitespace);
    }
    printf("\n");
    return 0;
}