對任意大於1的自然數n,若n為奇數,則將n變為3n+1

否則變為n的一半,經過若干次的變換,最後一定會使n變為1。

例如 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1。

 範例輸入:

3

 

範例輸出:

7

 

解題與分析:

因為不知輸入的n會執行幾次,因此適合用while來實作,

再下判斷式奇數執行3n+1,偶數則除2,實做出來不難。

 

範例程式碼如下:

#include<stdio.h>
#include<math.h>

int main(void)
{
    int n2, count = 0;
    scanf("%d", &n2);
    long long n = n2; //使用long防止乘法溢出	    
while( n > 1) { if(n % 2 == 1) { n = 3 * n + 1;
}else{
n /= 2; } count++; } printf("%d", count); }

 

arrow
arrow
    文章標籤
    3n+1
    全站熱搜

    Will 發表在 痞客邦 留言(0) 人氣()