Главная » Файлы » Мои файлы

Поиски чисел Лишрел на Си (исходник)
[ Скачать с сервера (0.7 Kb) ] 15.08.2016, 00:55

«Перевернуть и сложить» (англ. Reverse-Then-Add) — название операции, выполняемой над числом. Суть заключается в сложении исходного десятичного числа с его перевёрнутой копией (числом, записанным с конца). Например, 56 + 65 = 121, 521 + 125 = 646.

Некоторые числа (в частности, все однозначные и двузначные числа) становятся палиндромами достаточно быстро — после нескольких применений операции, и поэтому не являются числами Лишрел. Около 80 % всех чисел, меньших 10000, разрешаются в палиндром в 4 или меньше шагов. Около 90 % — за 7 и меньше шагов.
Подробнее https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0_196

Мой вариант поиска чисел:

Исходный код на Си:

#include <stdio.h>

int perevert (int d)
{
 int m,dd;
    m=0;
    dd=d;
 while (dd>0)
{  m=(m*10)+dd%10;
dd/=10;
 }
return m;
}


int main(void)
{
int n,y,kolvo;
long long unsigned x;
char ch;
kolvo=0;
    
printf("Введите начальное число\n");
scanf("%d",&n);
    

/*Бесконечный цикл*/
while (1) {
    x=n;
    kolvo=0;
         printf("%lld\n",x);/*Выводим само число*/
while (x!=perevert(x)){x+=perevert(x); printf("+"); kolvo++;/*если х-не палиндром, складываем его с обратным ему и выводим "+"*/
if (kolvo>1000) {printf("\nЧисло %d - число Лишрел\n",n); goto metka;}/*Если мы это уже повторили более 1000 раз, дальше нет смысла продолжать, хотя на самом деле long long int уже загибается на десятых повторах*/
                      }
    printf("\nПалиндром:%lld\n",x);/*Если мы нашли палиндром - выводим*/
    metka: /*На случай числа Лишрел*/
    n++;/*Берем след. число*/
   scanf("%c",&ch); /*чтоб можно было проследить, читаем рандомный символ*/
}    

    
}

Категория: Мои файлы | Добавил: BATAREYA
Просмотров: 425 | Загрузок: 4 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: