81.角谷猜想
日本一位中學生發(fā)現(xiàn)一個奇妙的“定理”,請角谷教授證明,而教授無能為力,于是產生角谷猜想。猜想的內容是:任給一個自然數(shù),若為偶數(shù)除以2,若為奇數(shù)則乘3加1,得到一個新的自然數(shù)后按照上面的法則繼續(xù)演算,若干次后得到的結果必然為1。請編程驗證。
*問題分析與算法設計
本題是一個沿未獲得一般證明的猜想,但屢試不爽,可以用程序驗證。
題目中給出的處理過程很清楚,算法不需特殊設計,可按照題目的敘述直接進行證。
*程序與程序注釋
#include
void main()
{
int n,count=0;
printf("Please enter number:");
scanf("%d",&n); /*輸入任一整數(shù)*/
do{
if(n%2)
{
n=n*3+1; /*若為奇數(shù),n乘3加1*/
printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);
}
else
{
n/=2; /*若為偶數(shù)n除以2*/
printf("[%d]: %d/2=%d\n",++count,2*n,n);
}
}while(n!=1); /*n不等于1則繼續(xù)以上過程*/
}
日本一位中學生發(fā)現(xiàn)一個奇妙的“定理”,請角谷教授證明,而教授無能為力,于是產生角谷猜想。猜想的內容是:任給一個自然數(shù),若為偶數(shù)除以2,若為奇數(shù)則乘3加1,得到一個新的自然數(shù)后按照上面的法則繼續(xù)演算,若干次后得到的結果必然為1。請編程驗證。
*問題分析與算法設計
本題是一個沿未獲得一般證明的猜想,但屢試不爽,可以用程序驗證。
題目中給出的處理過程很清楚,算法不需特殊設計,可按照題目的敘述直接進行證。
*程序與程序注釋
#include
void main()
{
int n,count=0;
printf("Please enter number:");
scanf("%d",&n); /*輸入任一整數(shù)*/
do{
if(n%2)
{
n=n*3+1; /*若為奇數(shù),n乘3加1*/
printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);
}
else
{
n/=2; /*若為偶數(shù)n除以2*/
printf("[%d]: %d/2=%d\n",++count,2*n,n);
}
}while(n!=1); /*n不等于1則繼續(xù)以上過程*/
}