现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:

我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
输入:整数N(1≤N≤10000000) 输出:表中的第N项
样例: INPUT OUTPUT
N=7 1/4
[参考代码]
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n;
cin>>n;
if(n==1) {
cout<<1<<'/'<<1;
return 0;
}
int s=2,o=1;
bool f=false;
int na=1,nb=2;
while(true) {
for(int i=1; i<=s; i++) {
o++;
if(o==n) {
if(f==false)
cout<<i<<'/'<<s-i+1;
else
cout<<s-i+1<<'/'<<i;
return 0;
}
}
s++;
if(f==false)
f=true;
else
f=false;
}
return 0;
}

这篇文章解析了乔治·康托尔利用Z字形表格证明有理数可枚举的方法,并提供了一个C++程序示例。通过理解这个原理,读者可以学习如何编写查找表中第N项的算法,适用于数学爱好者和编程入门者。

283

被折叠的 条评论
为什么被折叠?



