我可以在Mathematica函数中返回列表吗?

时间:2014-12-09 16:42:06

标签: wolfram-mathematica

在我的代码中,我试图从我的函数中返回数字列表,但它只是 null

 sifra[zprava_, klic_] := Module[
  {c, n, e, m, i, z, pocCyklu, slovo},
  pocCyklu = Ceiling[Divide[StringLength[zprava], 5]];
  c = Array[{}, pocCyklu];
  z = Partition[Characters[zprava], 5, 5, 1, {}];
  For[i = 1, i < pocCyklu + 1, i++,
   slovo = StringJoin @ z[[i]];
   m = StringToInteger[slovo];
   n = klic[[1]];
   e = klic[[2]];
   c[[i]] = PowerMod[m, e, n];
  ]
  Return[c]
 ];
 sif = sifra[m, verejny]

完成周期后,c中应该有2个数字。

Print[c]可以正常打印包含2个元素的列表,但sif null
Return[c]给了我:

  

空回报[{28589400926821874625642026431141504822,2219822858062194181357669868096}]

1 个答案:

答案 0 :(得分:1)

你可以写这样的函数:

sifra[zprava_, klic_] := Module[{c, n, e, m, i, z, pocCyklu, slovo},
  pocCyklu = Ceiling[Divide[StringLength[zprava], 5]];
  c = ConstantArray[{}, pocCyklu]; 
  z = Partition[Characters[zprava], 5, 5, 1, {}];
  For[i = 1, i < pocCyklu + 1, i++,
   slovo = StringJoin@z[[i]];
   m = ToExpression[slovo];
   {n, e} = klic;
   c[[i]] = PowerMod[m, e, n]];
  c]

演示如何使用示例数据:

sifra["9385637605763057836503784603456", {124, 2}]
  

{20,97,41,9,4,113,36}

你也可以写这样的函数:

sifra[zprava_, {n_, e_}] := Module[{z},
  z = Partition[Characters[zprava], 5, 5, 1, {}]; 
  Map[PowerMod[ToExpression[StringJoin[#]], e, n] &, z]]
相关问题