首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找列表是否为ABC-三元组。

查找列表是否为ABC-三元组。
EN

Code Golf用户
提问于 2019-01-03 11:53:40
回答 11查看 1.7K关注 0票数 17

三个正整数A,B,C是ABC-三重,如果它们是互质的,且A

例子:

  • 1, 8, 9是一个ABC三重,因为它们是相互作用的,1<8和1+8=9。
  • 6, 8, 14不是因为他们不是警察
  • 7, 5, 12不是因为7>5

有关ABC-三元组的更多细节,您可以看到这个Frits Beukers 2005专题介绍

Input/Output

三个整数,十进制写的。可能是分隔的值或列表。无论这三个整数是否是ABC-三元组,输出都必须是一个真实/虚假的值。

注意:必须尊重列表中整数的顺序,例如:1, 8, 9不被视为与9, 1, 8或任何其他组合相同的列表。所以第一个是ABC-三重,第二个不是。

因此,A是列表的第一个元素,B是第二个元素,C是第三个元素。

测试用例

以下每个列表都应该输出一个真实的值

代码语言:javascript
运行
复制
[1, 8, 9]
[2, 3, 5]
[2, 6436341, 6436343]
[4, 121, 125]
[121, 48234375, 48234496]

以下每一个列表都应该输出一个falsey值

代码语言:javascript
运行
复制
[1, 1, 2]
[1, 2, 5]
[1, 9, 8]
[4, 12872682, 12872686]
[6, 8, 14]
[7, 5, 12]
EN

回答 11

Code Golf用户

发布于 2019-01-03 14:27:24

Excel,33字节

代码语言:javascript
运行
复制
=AND(A1+B1=C1,GCD(A1:C1)=1,A1<B1)
票数 5
EN

Code Golf用户

发布于 2019-01-03 16:54:49

C# (可视化C#交互式编译器),90字节

代码语言:javascript
运行
复制
n=>new int[(int)1e8].Where((_,b)=>n[0]%++b<1&n[1]%b<1).Count()<2&n[0]+n[1]==n[2]&n[0]<n[1]

在我的机器上运行的数字可达1e8,大约需要35秒。这个函数没有像其他函数那样计算gcd,而是实例化一个巨大的数组,过滤不属于a或b的索引,并检查还剩下多少个元素。接下来,检查元素1加上元素2是否等于元素3。最后,它检查第一个元素是否小于第二个元素。

在网上试试!

票数 2
EN

Code Golf用户

发布于 2019-01-03 17:19:49

C# (可视化C#交互式编译器),59字节

代码语言:javascript
运行
复制
(a,b,c)=>Enumerable.Range(2,a).All(i=>a%i+b%i>0)&a<b&a+b==c

在网上试试!

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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