SquareFreeQ,PrimePowerQ,KroneckerSymbol,ChineseRemainder,PrimitiveRootが組込みのMathematica カーネル関数に加わった.
NextPrimeとPreviousPrimeが新しく加わった組込みの Mathematica カーネル関数NextPrimeとして利用できるようになった.
Random[Prime,…]が,新しく加わった組込みの Mathematica カーネル関数RandomPrimeとして利用できるようになった.
PrimeFactorListの機能が,強化された組込みの Mathematica カーネル関数FactorIntegerで利用できる.
SqrtModが組込みの Mathematica カーネル関数PowerModとして利用できるようになった.
SqrtModListが新しく加わった組込みの Mathematica カーネル関数PowerModListとして利用できるようになった.
ClassNumberが新しく加わった組込みの Mathematica カーネル関数NumberFieldClassNumberとして利用できるようになった.
SumOfSquaresRが組込みの Mathematica カーネル関数SquaresRとして利用できるようになった.
OrderedSumOfSquaresRepresentationsが組込みの Mathematica カーネル関数PowersRepresentationsとして利用できるようになった.
SquareFreeQ
SquareFreeQ[2 * 3 * 5 * 7]NextPrimeとPreviousPrime
NextPrime[1000000]NextPrime[1000000, -1]Random[Prime, ...]
RandomPrime[{10, 100}]PrimeFactorList
FactorInteger[713 / 41][[All, 1]]PrimePowerQ
PrimePowerQ[12167]ChineseRemainder
x が4を法とする3に等しいか,x が5を法とする4に等しくなるような最小の正の整数 x:
ChineseRemainder[{3, 4}, {4, 5}]SqrtModとSqrtModList
が11を法とする3に等しくなるような,最小の非負の整数
を求める:
PowerMod[3, 1 / 2, 11]PowerModList[3, 1 / 2, 11]ClassNumber
NumberFieldClassNumber[Sqrt[-10099]]FundamentalDiscriminantQ
FundamentalDiscriminantQは次の定義で置き換えることができる:
FundamentalDiscriminantQ[n_] :=
n ≠ 1 && Mod[n, 4] == 1 && SquareFreeQ[n] ||
!(Mod[n, 16] ≠ 8 ≠ 12) && SquareFreeQ[Quotient[n, 4]]
FundamentalDiscriminantQ[3243601]ClassList
ClassList[n_ ? Negative] :=
Select[Flatten[#, 1]&@Table[
{i, j, (j ^ 2 - n) / (4i)}, {i, Sqrt[-n / 3]}, {j, 1 - i, i}],
Mod[#3, 1] == 0 && #3 ≥ # && GCD[##] == 1 && !(# == #3 && #2 < 0)&@@#&]
ClassList[-403]KroneckerSymbol
KroneckerSymbol[5, 3]SumOfSquares
SquaresR[3, 100]SumOfSquaresRepresentations
SumOfSquaresRepresentationsは次の定義で置換することができる:
SumOfSquaresRepresentations[d_, n_] := Module[{x, a, sol}, a = Array[x, d];
sol = Reduce[a.a == n, a, Integers];If[sol === False, {}, a /. {ToRules[sol]}]]SumOfSquaresRepresentations[3, 100]OrderedSumOfSquaresRepresentations
Reverse /@ PowersRepresentations[100, 3, 2]LeastPrimeFactor
LeastPrimeFactorは次の定義で置き換えることができる:
LeastPrimeFactor[n_Integer /; n > 1] :=
Prime@NestWhile[# + 1&, 1, Mod[n, Prime[#]] ≠ 0&]
LeastPrimeFactor[3243601]QuadraticRepresentation
QuadraticRepresentationは次の定義で置き換えることができる:
QuadraticRepresentation[d_, n_] := Module[{x, y, ans},
ans = FindInstance[{x ^ 2 + d y ^ 2 == n, x ≥ 0, y ≥ 0}, {x, y}, Integers, 1];
({x, y} /. ans[[1]]) /; Head@ans =!= FindInstance]
QuadraticRepresentation[3, 4410796736359]{1, 3}.% ^ 2 == 4410796736359SumOfFactors
DivisorSigma[1, 360] - 360WhichRootOfUnity
WhichRootOfUnityは次の定義で置き換えることができる:
WhichRootOfUnity[z_] := Module[{d, ans},
If[z == 1, Return[{1, 1}]];
(ans = FullSimplify[Arg[z] / (2Pi)];
{d = Denominator[ans], Mod[Numerator[ans], d]} /;
MatchQ[ans, _Rational]) /;
PossibleZeroQ[Abs[z] - 1]]
WhichRootOfUnity[Sqrt[(5 - Sqrt[5]) / 8] - I(1 + Sqrt[5]) / 4]AliquotSequence
AliquotSequenceは次の定義で置き換えることができる:
AliquotSequence[n_] :=
NestWhileList[DivisorSigma[1, #] - #&, n, Unequal[##, 0]&, All]
AliquotSequence[220]AliquotCycle
AliquotCycleは次の定義で置き換えることができる:
AliquotCycle[n_] :=
NestWhileList[DivisorSigma[1, #] - #&, n, Unequal[##, 0]&, All] /.
{{___, 0} :> {0},
{___, i_, s___, i_} :> RotateLeft[{i, s},
Position[{i, s}, Min@{i, s}, {1}, 1][[1, 1]] - 1]}
AliquotCycle[562]もとのパッケージはWeb (library.wolfram.co.jp/infocenter/MathSource/6774)で利用できるようになった.