#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
void Factorization(long long num, _Bool SieveArray[])
{
long long div = 2, to_facotrize
= num
;
printf("Prime factorization of %lli:\n", num
); while (div < to_facotrize
) {
if (SieveArray
[div] == 1) {
if (to_facotrize
% div == 0) {
}
else {
}
} else {
}
}
}
int main(int argc, char const *argv[])
{
clock_t start, end;
void Factorization(long long num, _Bool SieveArray[]);
// Sieve of Eratosthenes
long long n = 1000001, i, j;
long long sqrt_n
= sqrt(n
);
_Bool SieveArray[n];
SieveArray[0] = 0, SieveArray[1] = 0;
for (i = 2; i < n; i++)
SieveArray[i] = 1;
for (i = 2; i < sqrt_n; i++)
if (SieveArray[i])
for (j = i*i; j < n; j+=i)
SieveArray[j] = 0;
long long num;
while( 1 )
{
if (scanf("%lld", &num
) != 1) { fprintf(stderr
, "Error: Undefined stdin!\n"); return 100;
} else {
if ( num == 1 ) {
printf("Prime factorization of 1:\n1\n"); } else if ( num < 0 ) {
fprintf(stderr
, "Error: Undefined stdin!\n"); return 100;
} else if ( num == 0 ) {
break;
} else if ( num < 1000001 ) {
if (SieveArray[num] == 1) {
printf("Prime factorization of %lli:\n%lli\n", num
, num
); } else {
Factorization(num, SieveArray);
}
} else {
Factorization(num, SieveArray);
}
}
}
double time_taken = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("It's took %f seconds to execute\n", time_taken
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHRpbWUuaD4KCnZvaWQgRmFjdG9yaXphdGlvbihsb25nIGxvbmcgbnVtLCBfQm9vbCBTaWV2ZUFycmF5W10pCnsKCWxvbmcgbG9uZyBkaXYgPSAyLCB0b19mYWNvdHJpemUgPSBudW07CgoJcHJpbnRmKCJQcmltZSBmYWN0b3JpemF0aW9uIG9mICVsbGk6XG4iLCBudW0pOwoJd2hpbGUgKGRpdiA8IHRvX2ZhY290cml6ZSkKCXsKCQlpZiAoU2lldmVBcnJheVtkaXZdID09IDEpIAoJCXsKCQkJaWYgKHRvX2ZhY290cml6ZSAlIGRpdiA9PSAwKQoJCQl7CgoJCQkJcHJpbnRmKCIlbGxpIHggIiwgZGl2KTsKCQkJCXRvX2ZhY290cml6ZSAvPSBkaXY7CgkJCX0gCgoJCQllbHNlIHsKCQkJCWlmICggZGl2ID09IDIgKSBkaXYgPSAzOwoJCQkJZWxzZSBkaXYgKz0gMjsKCQkJfQoJCX0gZWxzZSB7CgkJCWRpdiArPSAyOwoJCX0KCX0KCXByaW50ZigiJWxsaVxuIiwgZGl2KTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgY29uc3QgKmFyZ3ZbXSkKewoJY2xvY2tfdCBzdGFydCwgZW5kOwoJc3RhcnQgPSBjbG9jaygpOwoJdm9pZCBGYWN0b3JpemF0aW9uKGxvbmcgbG9uZyBudW0sIF9Cb29sIFNpZXZlQXJyYXlbXSk7CgoJLy8gU2lldmUgb2YgRXJhdG9zdGhlbmVzIAoJbG9uZyBsb25nIG4gPSAxMDAwMDAxLCBpLCBqOwoJbG9uZyBsb25nIHNxcnRfbiA9IHNxcnQobik7CgoJX0Jvb2wgU2lldmVBcnJheVtuXTsKCVNpZXZlQXJyYXlbMF0gPSAwLCBTaWV2ZUFycmF5WzFdID0gMDsKCglmb3IgKGkgPSAyOyBpIDwgbjsgaSsrKQoJCVNpZXZlQXJyYXlbaV0gPSAxOwoKCWZvciAoaSA9IDI7IGkgPCBzcXJ0X247IGkrKykKCQlpZiAoU2lldmVBcnJheVtpXSkKCQkJZm9yIChqID0gaSppOyBqIDwgbjsgais9aSkKCQkJCVNpZXZlQXJyYXlbal0gPSAwOwoKCglsb25nIGxvbmcgbnVtOwoJd2hpbGUoIDEgKSAKCXsKCQlpZiAoc2NhbmYoIiVsbGQiLCAmbnVtKSAhPSAxKSB7CgkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6IFVuZGVmaW5lZCBzdGRpbiFcbiIpOwoJCQlyZXR1cm4gMTAwOwoJCX0gZWxzZSB7CgkJCWlmICggbnVtID09IDEgKSB7CgkJCQlwcmludGYoIlByaW1lIGZhY3Rvcml6YXRpb24gb2YgMTpcbjFcbiIpOwoJCQl9IGVsc2UgaWYgKCBudW0gPCAwICkgewoJCQkJZnByaW50ZihzdGRlcnIsICJFcnJvcjogVW5kZWZpbmVkIHN0ZGluIVxuIik7CgkJCQlyZXR1cm4gMTAwOwoJCQl9IGVsc2UgaWYgKCBudW0gPT0gMCApIHsKCQkJCWJyZWFrOwoJCQl9IGVsc2UgaWYgKCBudW0gPCAxMDAwMDAxICkgewoJCQkJaWYgKFNpZXZlQXJyYXlbbnVtXSA9PSAxKSB7CgkJCQkJcHJpbnRmKCJQcmltZSBmYWN0b3JpemF0aW9uIG9mICVsbGk6XG4lbGxpXG4iLCBudW0sIG51bSk7CgkJCQl9IGVsc2UgewoJCQkJCUZhY3Rvcml6YXRpb24obnVtLCBTaWV2ZUFycmF5KTsKCQkJCX0JCgkJCX0gZWxzZSB7CgkJCQlGYWN0b3JpemF0aW9uKG51bSwgU2lldmVBcnJheSk7CgkJCX0KCQl9Cgl9CgoJZW5kID0gY2xvY2soKTsKCWRvdWJsZSB0aW1lX3Rha2VuID0gKChkb3VibGUpIChlbmQgLSBzdGFydCkpIC8gQ0xPQ0tTX1BFUl9TRUM7CglwcmludGYoIkl0J3MgdG9vayAlZiBzZWNvbmRzIHRvIGV4ZWN1dGVcbiIsIHRpbWVfdGFrZW4pOwoKCXJldHVybiAwOwp9Cg==