廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4054 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
JasonQQ
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][討論] 3N+1的問題…
題目解說:http://luckycat.kshs.kh.edu.tw/homework/q100.htm
---------------------------------------------------------------------------------------------------------------------
我寫的程式如下:
#include <iostream>
using namespace std;

//Three_N_Plus_One開始
void Three_N_Plus_One(int i)
{ //用來列印數列
if(i <= 0)
{
cout << "數字小於1,離開..." << endl;
abort(); /* 立刻終止程式的函式 */
}

do
{
if(i == 1)
{
cout << i << endl;
break;
}
else if(i%2 == 0)
{
cout << i << " ";
i /= 2;

// 改善起點
if(i == 1)
{
cout << i << endl;
break;
}
// 改善終點

Three_N_Plus_One(i);
}
else
{
cout << i << " ";
i = 3 * i + 1;
Three_N_Plus_One(i);
}
}
while(i <= 1);
}
//T ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容




獻花 x0 回到頂端 [樓 主] From:未知地址 | Posted:2007-07-31 14:02 |
kioko
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

複製程式
#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 ...


獻花 x0 回到頂端 [1 樓] From:臺灣 | Posted:2009-09-15 14:46 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.076282 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言