Найти все числа-палиндромы из диапазона от n до m, которые при возведении в квадрат также дают палиндром - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <math.h> #include <conio.h> main() { int s[10000],i,q,a, z,h[10000],v,n,m,j,y,w; puts("n m"); scanf("%d %d", &n, &m); v=0; while (n!=m){ y=0; i=0; a=n*n; while (a!=0) { q=a%10; a=a/10; s[i]=q; i++; z=i; } for (i=0;i<z;i++) y=y*10+s[i]; if ((n*n==y)&&(n>3)) {h[v]=n; v++;} n++; } for (i=0;i<v;i++) printf(" %d", h[i]); getch(); return(0); }
Решение задачи: «Найти все числа-палиндромы из диапазона от n до m, которые при возведении в квадрат также дают палиндром»
#include <stdio.h> unsigned reverse_number(unsigned n) { unsigned ret = 0; for ( ; n; n /= 10 ) ret = ret * 10 + n % 10; return ret; } int is_palindrome(unsigned n) { return ( n == reverse_number(n) ); } int main(void) { unsigned low, high; while ( printf("Low & high: ") && scanf("%u%u", &low, &high) == 2 && low < high ) for ( ; low <= high; ++low ) if ( is_palindrome(low) && is_palindrome(low * low) ) printf("%u %u\n", low, low * low); return 0; }
Объяснение кода листинга программы
В этом коде реализована функция reverse_number(), которая принимает целое число в десятичной системе счисления и возвращает его обратное число в той же системе счисления. Функция is_palindrome() принимает целое число и проверяет, является ли оно палиндромом (равно своему обратному числу). В функции main() пользователю предлагается ввести два числа, low и high, которые ограничивают диапазон чисел для проверки. Затем в цикле while происходит проверка каждого числа в этом диапазоне на палиндром и, если это так, то проверяется, является ли квадрат этого числа также палиндромом. Если это так, то числа выводятся на экран. Пользователь может прервать выполнение программы, вводя не числа, а 0, или когда достигается верхний предел диапазона.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д