卡布列克是指任意一個四位數,只要他們各個位上的數字不相同,有這樣的規律。
一、把組成這個四位數的各個數字從大到小排列,組成一個最大的四位數。
二、把組成這個四位數的各個數字從小到大排列,組成一個最小的四位數。
三、求出以上兩個數字之差,得到一個新的四位數,重複上述過程,最後得到的結果爲6174.稱這樣的數字爲卡布列克數
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test_01_1
{
class Program
{
static void Main(string[] args)
{
int[] num = new int[4];
int number, a, b, c, d, t, max, min, r = 0;
Console.Write("請輸入一個四位不相同的正整數:");
number = Convert.ToInt32(Console.ReadLine());
while (r != 6174)
{
num[0] = a = number / 1000;
num[1] = b = (number / 100) % 10;
num[2] = c = (number / 10) % 10;
num[3] = d = number % 10;
for (int i = 0; i < 4; i++) //冒泡排序
{
for (int j = 0; j < 3 - i; j++)
{
if (num[j] < num[j + 1])
{
t = num[j];
num[j] = num[j + 1];
num[j + 1] = t;
}
}
}
max = num[0] * 1000 + num[1] * 100 + num[2] * 10 + num[3];
Console.WriteLine("最大數爲:{0}", max);
for (int i = 0; i < 4; i++) //冒泡排序
{
for (int j = 0; j < 3 - i; j++)
{
if (num[j] > num[j + 1])
{
t = num[j];
num[j] = num[j + 1];
num[j + 1] = t;
}
}
}
min = num[0] * 1000 + num[1] * 100 + num[2] * 10 + num[3];
r = max - min;
Console.WriteLine("最小數爲:{0}", min);
Console.WriteLine("計算結果:{0}-{1}={2}", max, min, r);
number = r;
}
Console.ReadLine();
}
}
}
運行結果
請輸入一個四位不相同的正整數:1234
最大數爲:4321
最小數爲:1234
計算結果:4321-1234=3087
最大數爲:8730
最小數爲:378
計算結果:8730-378=8352
最大數爲:8532
最小數爲:2358
計算結果:8532-2358=6174