Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int number_of_digits(int n)
- {
- if(n == 0)
- return 0;
- else
- return 1 + number_of_digits(n/10);
- }
- int power(int x, int y)
- {
- if(y == 0)
- return 1;
- else
- return x * power(x, y-1);
- }
- int reverse_number(int n)
- {
- int nr, rez, rest;
- if(n == 0 )
- {
- return 0;
- }
- else
- {
- rest = n % 10;
- nr = number_of_digits(n/10);
- rez = rest * power(10, nr);
- return reverse_number(n / 10) + rez;
- }
- }
- /*
- Afiseaza 1 daca este palindrom si 0 in rest!
- */
- int palindrome(int nr)
- {
- if(nr == reverse_number(nr))
- return 1;
- else
- return 0;
- }
- int next_palindrome(int nr)
- {
- while(!palindrome(nr))
- {
- nr++;
- }
- return nr;
- }
- /*
- Afiseaza 1 daca este prim si 0 in rest!
- */
- int prim(int nr)
- {
- int i;
- for(i = 2; i <= nr / 2; i++)
- {
- if(nr % i == 0)
- return 0;
- }
- return 1;
- }
- int min_prim(int nr)
- {
- while(!prim(nr))
- {
- nr--;
- }
- return nr;
- }
- int max_prim(int nr)
- {
- while(!prim(nr))
- {
- nr++;
- }
- return nr;
- }
- void afiseaza_prim(int nr)
- {
- int min, max, dif1, dif2;
- if(!prim(nr))
- {
- min = min_prim(nr);
- max = max_prim(nr);
- dif1 = nr - min;
- dif2 = max - nr;
- if(dif1 == dif2)
- {
- printf("%d %d\n", min, max);
- }
- if(dif1 < dif2)
- {
- printf("%d\n", min);
- }
- if(dif2 < dif1)
- {
- printf("%d\n", max);
- }
- }
- }
- int main()
- {
- int x, nr;
- scanf("%d ", &x);
- nr = reverse_number(x);
- printf("%d\n", nr);
- nr = next_palindrome(120);
- printf("%d\n", nr);
- while(x > 0)
- {
- afiseaza_prim(x);
- scanf("%d ", &x);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement