Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int max, num;
- int *start, *primes;
- int prime(int i) {
- if(num%primes[i] == 0)
- return 0;
- if(i<max)
- prime(++i);
- return 1;
- }
- int main(void) {
- int i, j;
- printf("Insert the number: ");
- scanf("%d", &num);
- if(num < 2) {
- printf("You must insert a number greater than 1.");
- return -1;
- } else if(num == 2) {
- printf("%d is prime.", num);
- return 0;
- } else if(num%2 == 0) {
- printf("%d is NOT prime.", num);
- return 1;
- }
- max = ((int)(sqrt(num)-0.5)%2 == 0) ? (int)(sqrt(num)-0.5)/2 : ((int)(sqrt(num)-0.5)-1)/2;
- start = calloc(max, sizeof(int));
- for(i=0; i<max; i++)
- start[i] = (i*2)+3;
- for(i=0; i<max; i++) {
- if(start[i] == 0)
- continue;
- for(j=(i+1); j<max; j++)
- if(start[j] != 0 && start[j]%start[i] == 0)
- start[j] = 0;
- }
- for(i=0, j=0; i<max; i++)
- if(start[i] != 0) {
- primes = realloc(primes, j+1);
- primes[j++] = start[i];
- }
- if(prime(0))
- printf("%d is prime.", num);
- else
- printf("%d is NOT prime.", num);
- free(start);
- free(primes);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement