I00025 尋找迴圈數

2021-07-13 12:27:29 字數 1129 閱讀 9837

這個程式為《數學之美系列程式》之一。

這個問題是:找出所有n位數中的迴圈數。

乙個n位數中的迴圈數是指該數乘以1到n之後,每位數字順序發生移位,可以是移動若干位。

例如:142857是乙個6位數的迴圈數,滿足以下條件:

142857*1=142857

142857*2=285714

142857*3=428571

142857*4=571428

142857*5=714285

142857*6=857142

經過試算,這樣的數並不好找,1到6位數中只有這乙個。

給出的程式是按照自頂向下逐步細化的程式設計方法編寫的順序程式。對於程式設計師來說這樣的程式設計訓練是必要的,畢竟編寫順序程式是常有的事情。

程式如下:

/* 找出所有n位數中的迴圈數,該數乘以1到n的數後,每位數字順序發生移位,可以是移動若干位。

* * 例如:142857是乙個6位數的迴圈數,滿足以下條件:

* 142857*1=142857

* 142857*2=285714

* 142857*3=428571

* 142857*4=571428

* 142857*5=714285

* 142857*6=857142

* */

#include // 判定n位數v乘以r是否為迴圈數,變數gethighdigit用於獲取v的最高位

int iscycle(int v, int n, int r, int gethighdigit)

// 所有的迴圈移位都不是迴圈數,則原數不是迴圈數

return 0;

}// 判定n位數v是否為迴圈數

int iscyclenumber(int v, int n)

{ int i, gethighdigit=1;

// 計算用於取最高位的數

for(i=1; i

輸入6時,程式執行結果如下: 6

142857

142857*1=142857

142857*2=285714

142857*3=428571

142857*4=571428

142857*5=714285

142857*6=857142

i 迴圈與i 迴圈

在網上看到一篇文章,裡面說i 和i 的效率有區別,這個區別我早就知道,其實就是乙個標誌暫存器的重用問題,雖然早就知道還是想寫出來來展示一下計算的魅力,這兩個例子是 int loop dec int n int i 0 int v 0 for i n i 0 i v i return v int lo...

for迴圈中的i 與 i

今天遇到乙個for迴圈 for i 1 i 1 i 其中使用的是 i,我以為 i會先於判斷執行,就上網找了找i 與 i的區別。答案很少,有乙個說的是效率後者高一些。然後我又寫了乙個測試的 var j 0 for i 1 i 1 i,j console.log console.log i,j 發現 是...

for迴圈中 i和i 的區別

語法 for 語句1 語句2 語句3 語句 1 在迴圈 塊 開始前執行 語句 2 定義執行迴圈 塊 的條件 語句 3 在迴圈 塊 已被執行之後執行 這就是迴圈中的 i和i 結果一樣的原因,但是效能不一樣,稍後解釋 語句1 同上面語法中的 語句1 語句1 是可選的,也就是說不使用語句1 也可以。var...