close
對任意大於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);
}
文章標籤
全站熱搜
留言列表