技术问询:求从正整数到有理数的非单射函数实例
正整数到有理数的非单射函数实例与构造
当然存在这类函数啦!其实构造起来并不复杂,而且你想到的上取整函数思路完全符合要求,咱们来具体拆解几个可行的方案:
1. 最简单的常数函数
直接让所有正整数都映射到同一个有理数,比如:f(n) = 0(n为任意正整数)
这个函数显然满足:
- 定义域是正整数,值域是有理数(0是有理数)
- 非单射:所有正整数都对应同一个值,不同的输入有相同的输出,完全符合非单射的定义。
2. 分段映射的非单射函数
可以设计分段规则,让多个正整数对应同一个有理数,比如:
- 当n为奇数时,
f(n) = 1 - 当n为偶数时,
f(n) = n/2
这个函数里,所有奇数都映射到1(比如n=1和n=3都对应1),偶数则对应正整数的一半(也是有理数),显然是非单射,同时值域全部属于有理数集合。
3. 你提到的上取整函数方案(完全有效!)
你想到的上取整函数思路非常靠谱,比如定义:f(n) = ⌈n/2⌉(⌈x⌉表示不小于x的最小整数)
对于正整数n来说:
- n=1和n=2时,f(n)=1
- n=3和n=4时,f(n)=2
- 以此类推,每两个连续的正整数会映射到同一个正整数(正整数属于有理数),完美满足“非单射”的要求,而且完全符合定义域和值域的限制。
其实还有很多变种,比如把多个正整数分组映射到同一个有理数,核心就是只要让至少两个不同的正整数对应同一个有理数,同时保证映射结果是有理数就行。
内容的提问来源于stack exchange,提问作者Hosep
相关产品推荐
相关产品推荐

