C語言編程:求一個迴文數

迴文數,是指正着讀、反着讀,都相同的數字。如:1221、13531...等等。

任取一個十進制整數,用下面的方法可以求出一個迴文數:

把這個數字的各個位,顛倒前後位置,形成一個新數,再和原數相加,得到的和,就可能是一個迴文數。

如果不是迴文數,就再重複上述的步驟,則最終可得到迴文數。

如十進制數是 78,則形成迴文數的過程爲:

78 + 87 = 165
165 + 561 = 726
726 + 627 = 1353
1353 + 3531 = 4884

上述方法,尚沒有得到數學上的理論證明,屬於一個猜想。可以編寫一個程序來加以驗證。

要求在輸入一個數字後,顯示出來計算的過程。


做而論道編程如下:

#include <stdio.h>

unsigned  int  f1(unsigned  int x)
{
    unsigned  int y = 0, t;
    while(x) {t = x % 10; x /= 10; y *= 10; y += t;}
    return y;
}

unsigned  int  f2(unsigned  int x)
{
    if (x == f1(x))  return 0;
    return 1;
}

void main()
{
    unsigned  int i;
    printf("Input a number: ");  scanf("%d", &i);
    while(f2(i))  {
      printf("%u + %u = ", i, f1(i)); //打印過程
      i += f1(i);
      printf("%u\n", i);          //打印過程
    }
    printf("HUI WEN SHU = ");    printf("%u", i);
    printf("\n\n");
}

這個程序執行時,顯示如下:

Input a number: 8627
8627 + 7268 = 15895
15895 + 59851 = 75746
75746 + 64757 = 140503
140503 + 305041 = 445544
HUI WEN SHU = 445544

Press any key to continue

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章