Найти все числа-палиндромы из диапазона от n до m, которые при возведении в квадрат также дают палиндром - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Знаю как написать код, чтобы программа находила числа, дающие в квадрате палиндром. Ниже приведён код. А как находить палиндромы, которые в квадрате также дают палиндром не знаю. Помогите пожалуйста решить задачу на языке С(Си), желательно, без массивов. Вот условие: нужно найти все числа-палиндромы из диапазона от n до m, которые при возведении в квадрат также дают палиндром. Палиндром - это число, которое можно читать как справа-налево, так и слева-направо(11,121,212).
#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);
}
P.S. Пишите на Си, я не С++

Решение задачи: «Найти все числа-палиндромы из диапазона от n до m, которые при возведении в квадрат также дают палиндром»

textual
Листинг программы
#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, или когда достигается верхний предел диапазона.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы