首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数的反除数

数的反除数
EN

Code Golf用户
提问于 2022-08-10 00:11:58
回答 21查看 2.8K关注 0票数 23

给定一个正整数n,以任意顺序输出其所有反除数.

来自OEIS A006272

反除数是指不把一个数字除以尽可能大的差额的数字。例如,20有反除数3,8和13。反除数的另一个名称是无偏的非除数。

换句话说,1 < m < nn的一个反除数,如果两者都是

  • m是偶数和n % m == m/2,或者
  • m是奇数,n % m等于(m-1)/2(m+1)/2

值得注意的是,1不是任何数字的反除数,因为它不满足短语“不除数”。

适用标准的密码-高尔夫规则。以字节为单位的最短代码获胜。

测试用例

代码语言:javascript
复制
1 -> []
2 -> []
3 -> [2]
4 -> [3]
5 -> [2, 3]
6 -> [4]
7 -> [2, 3, 5]
8 -> [3, 5]
9 -> [2, 6]
10 -> [3, 4, 7]
18 -> [4, 5, 7, 12]
20 -> [3, 8, 13]
234 -> [4, 7, 12, 36, 52, 67, 156]
325 -> [2, 3, 7, 10, 11, 21, 26, 31, 50, 59, 93, 130, 217]
EN

回答 21

Code Golf用户

发布于 2022-08-10 00:46:12

Python 2,46字节

代码语言:javascript
复制
lambda n:[m for m in range(2,n)if-2<n%m*2-m<2]

在网上试试!

票数 9
EN

Code Golf用户

发布于 2022-08-10 01:14:06

帕里/GP,30字节

-2字节,多亏了@xnor

-1字节,多亏了@pajonk@Dominic van Essen

代码语言:javascript
复制
n->[d|d<-[2..n],(n%d-d/2)^2<1]

在网上试试!

票数 6
EN

Code Golf用户

发布于 2022-08-10 01:50:46

果冻,8字节

代码语言:javascript
复制
%RḤ_RỊTḊ

在网上试试!

感觉..。杂乱无章,但我所能想到的重用范围联系的最好方法是:Ḋ%Ḥ_Ịʋ@Ƈ

代码语言:javascript
复制
%R          n mod each [1 .. n]
  Ḥ         times 2
   _R       minus each corresponding [1 .. n]
     Ị      in [-1 .. 1]?
      T     Find truthy indices
       Ḋ    and remove the first (always 1).
票数 4
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/250883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档