[問題] 3x+1問題
末學目前寫了一份關於3*X+1的數學問題
其數學內容為X(i+1)=(3*X(i)+1)/(2^Y) ps:(i+1)和(i)為下標
也就是說當X1帶入右式時,變成3*X(1)+1=X(2),X(3)、X(4)等以此類推
由於目前這數學只是個猜想,所以老師只要我們做出當X1<100的狀況
其中Y的值為使(2^Y)能整除3*X(i)+1的最大正整數。
例如:X(i)=3時,Y=1。當X(1)為任何正奇數時,數列會收斂到1。
例如:X(1)=3,X(2)=5,X(3)=1。
或者是:X(1)=7,X(2)=11,X(3)=17,X(4)=13,X(5)=5,X(6)=1。
程式可以不必一一輸出每一個數字的測試結果
在下用的DevC/C++版本
程式碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void seqence(void)
{
int x= 99;
int y[]= {1, 6, 1, 1, 2, 3, 4};
int i;
printf("The x1 is: %d\n", x);
for(i= 0; i<7; i++)
{
x= (3*x+ 1)/pow(2,y[i]);
printf("The x%d is: %d\n", i+2, x);
}
}
int main(int argc, char *argv[])
{
seqence();
system("PAUSE");
return 0;
}
執行結果如下: The x1 is: 99
The x2 is: 149
The x3 is: 7
The x4 is: 11
The x5 is: 17
The x6 is: 13
The x7 is: 5
The x8 is: 1
雖然程式寫的沒有錯誤,可是只算出X1= 99的情況,還有97,95,93...13...5...1
等其他奇數的情況,另外,我在陣列Y部分我是先用筆算出來在換算成程式碼,可是我是希
望用數學的方式來換成程式碼,請問一下各位高手該如何解決這個問題???
謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.183.89
推
09/25 04:29, , 1F
09/25 04:29, 1F
→
09/25 04:30, , 2F
09/25 04:30, 2F
→
09/25 06:11, , 3F
09/25 06:11, 3F
→
09/25 06:13, , 4F
09/25 06:13, 4F
推
09/25 07:07, , 5F
09/25 07:07, 5F
→
09/25 08:00, , 6F
09/25 08:00, 6F
→
09/25 08:24, , 7F
09/25 08:24, 7F
→
09/25 08:25, , 8F
09/25 08:25, 8F
討論串 (同標題文章)