複製程式
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string>
using namespace std ;
main (){
int n, length, max;
printf("3N+1 演算法\n");
printf("\n");
printf("請輸入任一值: ");
scanf("%d",&n);
length=0;
while(1){
printf(" %d",n);
if(n==1){
length++;
break;
}
else if(n%2==0){
length++;
n=n/2;
}
else if(n%2==1){
length++;
n=3*n+1;
}
}
printf("\n");
printf("循環長度為: %d\n",length);
printf("===============================================\n");
max=0;
int head, end, length_count;
printf("請輸入開頭至結尾的代表數字: ");
scanf("%d %d", &head, &end);
for(int i=head; i<=end; i++){
length=0;
n=i;
printf("這是第 %d 個",n);
while(1){
printf(" %d",n);
if(n==1){
length++;
break;
}
else if(n%2==0){
length++;
n=n/2;
}
else if(n%2==1){
length++;
n=3*n+1;
}
}
printf("\n");
if(max<length){
max=length;
}
else{
max=max;
}
printf("循環長度最長為: %d 次\n",max);
}
getch();
}
3N+1 的解題
XD ...