将列表元素赋值给变量

3

使用以下操作 FactorInteger[28851680048402838857] 在Mathematica中的输出结果如下:

{{3897424303, 1}, {7402755719, 1}}

我的问题是:如何提取两个质数(不含指数)并将它们分配给任意变量?

我想要检索两个质数,无论它们是什么,并将它们分配给一些变量。

例如:x0 = 3897424303x1 = 7402755719

谢谢!

2个回答

7
输出结果是一个列表,您可以使用类似于列表操作函数的函数,如 Part ([[]])来挑选您需要的部分,例如,
{x0, x1} = FactorInteger[28851680048402838857][[All, 1]]

或者,没有Part:
{{x0,dummy}, {x1,dummy}} = FactorInteger[28851680048402838857];

1
FactorInteger[28851680048402838857]的第一个元素可以选择。 - Joren
@Michael 没什么,真的。 - Sjoerd C. de Vries

4

你的问题中隐含了如何处理从 FactorInteger 等函数返回为输出的表达式的部分的问题。让我建议几个替代方案。

1. 把所有值都保存在一个 {list} 中,并使用 Part 访问每个元素:

x = First /@ FactorInteger[7813426]
{2, 31, 126023}
x[[1]]
x[[3]]
2
126023

2. 将因子存储为函数 x 的值,模拟数组的索引:

(此代码使用MapIndexedFunction。)

Clear[x]

MapIndexed[
  (x[First@#2] = First@#1) &,
  FactorInteger[7813426]
];

x[1]
x[3]
2
126023

您可以通过使用 ??? (参见 Information) 来查看所有的值:

?x
Global`x
x[1]=2
x[2]=31
x[3]=126023

我认为单词“索引”通常使用在数组的上下文中。你现在却用它来表示函数参数,我觉得这会让一些人感到困惑。 - Sjoerd C. de Vries
请注意,此页面中的单词“arrays”和“index”均用双引号括起来,表明作者知道这是对现有行话的滥用。我想你也很清楚这不是使用这些词的传统方式。我们经常看到MMA初学者使用a[i]而不是a[[i]],因为在这个意义上MMA有点不寻常。最好不要增加这种混淆。 - Sjoerd C. de Vries
1
@Sjoerd,请根据您的意愿编辑此答案。老实说,我不知道该写什么。我对术语很不熟悉。 - Mr.Wizard
我道歉,我的意图并不是要扮演语言纳粹。但考虑到问题的难度,我认为尽可能清晰明了是更明智的选择。 - Sjoerd C. de Vries
@Sjoerd,你指出错误是完全没问题的,但请现在也纠正它。 :-) - Mr.Wizard
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接