// UVa 583 - Prime Factors
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
#define maxn 46342
#define datatype signed long long int
bool isprime[maxn];
datatype prime[maxn];
int main() {
datatype m = 1;
prime[0] = 2;
memset(isprime, true, sizeof(isprime));
for (datatype i = 4; i < maxn; i += 2)
isprime[i] = false;
for (datatype i = 3; i < maxn; i++) {
if (isprime[i]) {
datatype j = i * i;
while (j < maxn) {
isprime[j] = false;
j += (i << 1);
}
prime[m++] = i;
}
}
datatype g;
while (cin >> g && g != 0) {
printf("%lld = ", g);
if (g < 0) {
printf("-1 x ");
g = -g;
}
datatype sqrtg = sqrt(g);
bool first = true;
for (datatype i = 0; i < m && prime[i] <= sqrtg; i++) {
while (g % prime[i] == 0) {
if (!first)
printf(" x ");
else
first = false;
printf("%lld", prime[i]);
g /= prime[i];
}
}
if (g != 1) {
if (!first)
printf(" x ");
else
first = false;
printf("%lld", g);
}
printf("\n");
}
return 0;
}
Wednesday, June 10, 2015
UVa 583 - Prime Factors
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment