C# 實現卡布列克數

卡布列克是指任意一個四位數,只要他們各個位上的數字不相同,有這樣的規律。
一、把組成這個四位數的各個數字從大到小排列,組成一個最大的四位數。
二、把組成這個四位數的各個數字從小到大排列,組成一個最小的四位數。
三、求出以上兩個數字之差,得到一個新的四位數,重複上述過程,最後得到的結果爲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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章