mathematica 能像Matlab 或者C 语言那样写实现一定功能的子函数吗? 5
在C语言或者Matlab中,可以写一些常用的子函数。但是mathematica中不可以,mathemactica只能写一个数学意义上的函数。不知道怎么样用mathemat...
在C 语言或者Matlab中,可以写一些常用的子函数。但是mathematica 中不可以,mathemactica只能写一个数学意义上的函数。不知道怎么样用mathematica 写一个自定义子函数实现 质数判断。
展开
1个回答
展开全部
听谁说不可以了?
isPrime1[n_] := Catch[Do[If[Mod[n, i] == 0, Throw@False], {i, 2, n^.5}]; True];
isPrime2 = #~Mod~Range[2, # - 1]~FreeQ~0 &;
Select[Range[2, 100], isPrime1]
Select[Range[2, 100], isPrime2]
Clear["`*"];
isPrime = Compile[{{n, _Integer}},
Catch[Do[If[n~Mod~i == 0, Throw@0], {i, 2, n^.5}]; 1],
RuntimeAttributes -> {Listable}];
isPrime@Range[2, 10^5] // Tr // AbsoluteTiming
Range[2, 10^5] /. r_ :> Pick[r, isPrime@r, 1] // Length // AbsoluteTiming
isPrime1[n_] := Catch[Do[If[Mod[n, i] == 0, Throw@False], {i, 2, n^.5}]; True];
isPrime2 = #~Mod~Range[2, # - 1]~FreeQ~0 &;
Select[Range[2, 100], isPrime1]
Select[Range[2, 100], isPrime2]
Clear["`*"];
isPrime = Compile[{{n, _Integer}},
Catch[Do[If[n~Mod~i == 0, Throw@0], {i, 2, n^.5}]; 1],
RuntimeAttributes -> {Listable}];
isPrime@Range[2, 10^5] // Tr // AbsoluteTiming
Range[2, 10^5] /. r_ :> Pick[r, isPrime@r, 1] // Length // AbsoluteTiming
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询