现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
1/1 1/2 1/3 1/4 1/5 …
2/1 2/2 2/3 2/4…
3/1 3/2 3/3 …
4/1 4/2 …
5/1 …
…
我们以 Z 字形给上表的每一项编号。第一项是 1/1,然后是 1/2 2/1 3/1 2/2
#include<stdio.h>
int main()
{
int i,j,a,b,c=0,n,s;
scanf("%d",&n);
for(i=1;s<n;i++)
{
s+=i;
}
i-=1;
s=s-i;
if(i%2==0)
{
for(a=i;a>=1;a--)
{
c++;
if(c==n-s)
{
printf("%d/%d",i+1-a,a);
return 0;
}
}
}
else
{
for(a=1;a<=i;a++)
{
c++;
if(c==n-s)
{
printf("%d/%d",i+1-a,a);
return 0;
}
}
}
}
代码哪里错了