1. 程式人生 > >基礎練習:1086:角谷猜想

基礎練習:1086:角谷猜想

1086:角谷猜想
【題目描述】
謂角谷猜想,是指對於任意一個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重複處理,最終總能夠得到1。如,假定初始整數為5,計算過程分別為16、8、4、2、1。程式要求輸入一個整數,將經過處理得到1的過程輸出來。
【輸入】
一個正整數N(N ≤ 2,000,000)。
【輸出】
從輸入整數到1的步驟,每一步為一行,每一部中描述計算過程。最後一行輸出"End"。如果輸入為1,直接輸出"End"。
【輸入樣例】
5
【輸出樣例】
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End

#include<iostream>
using namespace std;
int main()
{   int N,sum;
    cin>>N;
    sum=N;
    int i=0;
    while(sum>1)
        {i++;
		if(sum%2==0)
		{sum/=2;
		cout<<sum*2<<"/"<<"2"<<"="<<sum<<endl;}
		else if(sum%2!=0)            //注意if和else if的區別
		{sum=sum*3+1;
		cout<<(sum-1)/3<<"*"<<"3"<<"+"<<"1"<<"="<<sum<<endl;}
		}
    if(sum==1)
		cout<<"End"<<endl;
    return 0;
}

if…if與if…else if區別:
if…if是對每一個if進行判斷,互相之間不會影響;
else…if是不滿足if中的條件的時候,才會去執行else if 。如果if中的條件已經滿足了,就不會去判斷else if中的條件了