Присвоение элементов списка переменным - PullRequest
3 голосов
/ 23 ноября 2011

Выход Mathematica со следующей операцией FactorInteger[28851680048402838857] выглядит следующим образом:

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

Мой вопрос: как я могу извлечь два простых числа (без показателей степени) и присвоить их произвольной переменной?

Я в основном хочу получить два простых числа, какими бы они ни были, и назначить им некоторые переменные.

Пример: x0 = 3897424303 и x1 = 7402755719

Спасибо!

Ответы [ 2 ]

7 голосов
/ 23 ноября 2011

Вывод представляет собой список, и вы можете использовать функции управления списком , такие как Part ([[]]) , чтобы выбрать нужные фрагменты, например,

{x0, x1} = FactorInteger[28851680048402838857][[All, 1]]

или без Part:

{{x0,dummy}, {x1,dummy}} = FactorInteger[28851680048402838857];
4 голосов
/ 24 ноября 2011

Неявный в вашем вопросе - проблема обработки частей выражения, которое возвращается как вывод из функций, таких как FactorInteger.Позвольте мне предложить альтернативы.

1.Сохраните все значения в {list} и получите доступ к каждому элементу с помощью Part:

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

2.Сохранение коэффициентов в виде значений функции x, имитирующей индексацию массива:

(этот код использует MapIndexed, Function.)

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
...