Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define BUFFER_SIZE 1024
- int checkPrime(char *);
- int main(int argc, char **argv){
- if(argc != 2){
- printf("Usage: %s <size of palindrome>\n", argv[0]);
- exit(0);
- }
- unsigned size = atoi(argv[1]);
- if(size < 2){
- printf("Size of palindrome must be greater than 1\n");
- exit(0);
- }
- char buffer[BUFFER_SIZE];
- char read[BUFFER_SIZE];
- char *aux = (char *) malloc(sizeof(char) * size);
- unsigned index;
- unsigned length;
- unsigned counter;
- unsigned first, last;
- while(fgets(read, BUFFER_SIZE-size, stdin) != NULL){
- snprintf(buffer, BUFFER_SIZE, "%s%s", &buffer[strlen(buffer)-size+1], read);
- index = 0;
- length = strlen(buffer)-size;
- while(index < length){
- for(counter = 0; counter < size/2; counter++){
- first = index+counter;
- last = index+ (size-1) -counter;
- if(buffer[first] != buffer[last]){
- break;
- }
- }
- if(counter == size/2){
- for(counter = 0; counter < size; counter++){
- aux[counter] = buffer[index+counter];
- }
- aux[counter] = '\0';
- printf("%s - palindrome!", aux);
- if(checkPrime(aux) == 0){
- printf(" IS PRIME!");
- }else{
- printf(" ...");
- }
- printf("\n");
- }
- index++;
- }
- }
- free(aux);
- return 0;
- }
- int checkPrime(char *number){
- unsigned long long num = atol(number);
- unsigned long long max = num/2;
- unsigned long long counter = 0;
- if(num % 2 == 0){
- return 2;
- }
- for (counter = 3; counter < max;counter+=2){
- if(num % counter == 0){
- return counter;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement