股票投资——成果篇

发布于: 修改于: Android转发:0回复:0喜欢:0


挑战世界数学难题,也许是很多人想也不敢想的事情。我认为,即使失败了,也没有损失什么,于是乎鼓足勇气,迎难而上。
大概因为无聊,在4月10日那天,上网查找信息的时候,看到了科拉茨猜想。而我最喜欢的是电脑和理科,很自然地想到把编程和数学联系起来。
一、 C程序:

1、简单语句
main( )
{
int m,n,p;
scanf(“%d”,&m);
if(m<=0) printf(“It is an error.”);/*异常处理*/
else
{
for(p=m,n=1;p!=1;n++)
{
if(p%2==0) p=p/2;
else p=3*p+1;
}
printf(“%d”,n);
}
}
/* 无法执行4,2,1死循环,故p==1时结束*/

2、函数调用

#include<stdio.h>

int x;

void CollatzGuess(x)/*科拉茨猜想*/

{

for(size_t i=0;i<100;i++)

{

static int p=1;

while(x%2==0)/*偶数*/

{

x=x/2;

printf(“第%d次运算,结果是: %d\n”,p,x);

}

while(x%2==1)/*奇数*/

{

x=3*x+1;

printf(“第%d次运算,结果是: %d\n”,p,x);

}

if(x==1)

{

break;

}

return;

}

}

int main( )

{

printf(“请输入一个正整数: ”);

scanf_s(“%d”,&x);/*scanf()不会检查输入边界,可能造成数据溢出。scanf_s()会进行边界检查。此处没有注明整型x的大小,用scanf可能合理些。*/

CollatzGuess(x);/*调用函数*/

return 0;

}
二、数学证明:
设N、M、x、y为正整数,n、m、k为自然数,R、r为正偶数,K、S、Z为正奇数,S、Z属于K.函数Ψ(N)=F(R)Uf(K),F(R)=R÷2,f(K)=3K+1,则ψ(N)=Ψ(M)UΨ(4).
证明:N=R∪K

R=2^x·S∪2^y

S=1,R={2^n},则Ψ(2^n)=Ψ(4)

S≠1,Ψ(N)=Ψ((2^x·S)∪K)=F(2^x·S)∪f(K)=S∪f(K)=F(3S+1)∪f(K)。
假定f(K)=3K+1不变,F(2^x·S)在不断执行后最终化为S,代入f(K)=3K+1变为偶数,再变为F(3S+1),无论中间是出现奇数或偶数,当继续执行下去。
具体思路——前面有多少函数值并不是重点,最后出现4或F(4),也许猜想一定成立了。 即便会产生漏洞或重复,也无关紧要。

(此处省略,有空补上)
多年不写代码了,不足之处,恳请各位网友批评指正,谢谢!

上一篇—————目录—————下一篇