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; }
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; }
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; }
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; }