Нахождение наибольшего числа палиндрома - PullRequest
1 голос
/ 07 июня 2019

Во-первых, я новый кодер. Я пытаюсь найти самый большой палиндром, созданный из произведения двузначного целого числа, которое я нашел в Project Euler-Problem 4. Я написал некоторый код:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int n;
    int i,num,k;
    int sum, j=1, palindrome = 0;
    num = 999*999;
    i = n = num;
        while(!palindrome){
            for(i=999*999; i>10000; i--){
                sum = 0;
                num = i;
                while(num!=0){
                    k = num%10;
                    sum = sum*10 + k;
                    num /= 10;
                }
                if(i==sum){
                    printf("\nThe Number is a palindrome ");
                    palindrome = 1;
                    break;
                }
            }
        }
        printf("%d", sum);

        return 0;
}

Но, похоже, это дает мне неправильный результат. Это дает результат 997799. Я искал в интернете, результат должен быть 906609. Любая помощь будет благодарна.

1 Ответ

5 голосов
/ 07 июня 2019
if(n==sum){

Что такое n? Вы инициализируете его как 999*999 в верхней части программы, а затем уже никогда не меняете его. Возможно, вы имеете в виду i?

if(i==sum){

Теперь программа печатает 997799, правильный палиндром.


Обратите внимание, что нет проверки, что sum является произведением двух трехзначных чисел. Ваш нынешний подход, начиная с большого числа и уменьшая i на 1 каждую итерацию, на самом деле не сработает. Вам действительно нужны две переменные и два цикла для перебора двух трехзначных чисел.

Но две петли значительно затруднят поиск самого большого палиндрома. О, дорогой.

for (int a = 100; a <= 999; a++) {
    for (int b = 100; b <= 999; b++) {
        int n = a * b;

        // n is the product of two three digit numbers.
        // check: is it a palindrome?
        // check: is it the *largest* palindrome?
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...