Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(void)
- {
- long long int number;
- printf("Enter your number:\n");
- scanf("%lld", &number);
- long long int limit = squareroot(number);
- long long int i, j;
- long long int *prime;
- prime = malloc(limit * sizeof(long long int));
- if(!prime) {
- printf("not enough memory\n");
- return 1;
- }
- long long int p = 0, q = 0;
- for(i = 2; i < limit; i++) // initializes the prime number array
- {
- prime[i] = i;
- }
- for(i = 2; i < limit; i++) // Implementation of the Sieve
- {
- if(prime[i] != 0)
- {
- for(j = 2; j < limit; j++)
- {
- {
- prime[j * prime[i]] = 0;
- if(prime[i] * j > limit)
- break;
- }
- }
- }
- }
- for(i = 0; i < limit; i++) // Prints the prime numbers
- if(prime[i] != 0 && number % prime[i] == 0)
- {
- p = prime[i];
- break;
- }
- if(p != 0) {
- q = number / p;
- if(q > limit) {
- printf("There's no prime factorization!\n");
- free(prime);
- return 1;
- }
- for(i = 2; i < limit; i++)
- if(q == prime[i]) {
- if (p != q) {
- printf("p = %lld, q = %lld\n", p, q);
- }
- else
- {
- printf("p = q\n");
- }
- free(prime);
- return 0;
- }
- printf("There's no prime factorization!\n");
- free(prime);
- return 1;
- }
- else {
- printf("There's no prime factorization!\n");
- free(prime);
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement