c++ - 如何用计算机代码检查无限集是否在加法下是封闭的?

标签 c++ math matlab wolfram-mathematica set

给定 k 个正整数 a1 < a2 < a3 < ... < a k,以及所有大于 ak 的整数,我们要检查集合 A = {ai : i ∈ [1,k ]} ∪ {n : n > ak, n ∈ ℕ } = {a1, a2, a3, ... , ak, ak+1, ak+2, ...} 在加法下关闭.这意味着:

1 ≤ i ≤ k ai*bi ∈ A,对于任何非负整数 bi.

例如,{2,4,6,7,8,....} 在加法下闭合。

有什么简单的方法可以做到这一点吗?我们可以在 Mathematica 或 Matlab 中使用哪些函数?

最佳答案

如果集合中小于k的不连续部分不大我相信你可以直接这样处理:

a = {2, 4, 6};
Tr /@ Subsets[a, {2}];
TakeWhile[%, # < Last@a &];
Complement[%, a] === {}

关于c++ - 如何用计算机代码检查无限集是否在加法下是封闭的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8867723/

相关文章:

C++成员函数调用

algorithm - 找到完全改变累积和集的排列

java - 通过连接前 n 个自然数的二进制表示形式形成的数字的十进制值

math - 如何在Objective C中的NSMutableArray中找到最小值

matlab - 检索添加到 MATLAB OOP 中的类的动态属性列表

c++ - 在 VS2010 项目中更改输出目录不起作用

C++ 最早可以表现出来的未定义行为是什么?

python - 如何使用 numpy.void 类型

matlab - Matlab中的录音机

c++ - 编写 C++ 模板来计算表达式 - 指针错误?