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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.