1. 程式人生 > 實用技巧 >1001 害死人不償命的(3n+1)猜想 (15分)

1001 害死人不償命的(3n+1)猜想 (15分)

1001 害死人不償命的(3n+1)猜想

寫後總結:數字與字母相乘,乘法不能省略;注意區域性變數的位置;別光寫演算法,把"輸出"忘記寫.



這是一個部分正確的,原因是什麼?


#include<iostream> using namespace std; int main() { //int max=1000; int a; cin>>a; int sum; for(sum=0;a!=1;sum++) { if(a%2==1)//是這裡 a=a/2; else a=(3*a+1)/2; } cout
<<sum; return 0; }





正確程式碼1:
#include<cstdio> int main() { int n,count=0; scanf("%d",&n); while(n!=1) { if(n%2==0) n=n/2; else n=(3*n+1)/2; count++; } printf("%d",count); return 0; }


正確程式碼2:

#include<iostream> using namespace std; int main() { int a; cin>>a; int sum=0; for(;a!=1;sum++) { if(a%2==0) a=a/2; else a=(3*a+1)/2; } cout<<sum; return 0; }