mathematica试除法解素数问题
来源:互联网 发布:淘宝水弹枪合法吗 编辑:程序博客网 时间:2024/06/06 10:46
- 素数问题
DivPrime[n_]:=Block[{primeset={2,3}},For[k=4,k<=n,k++,Block[{i,flag=True},For[i=1,primeset[[i]]<=Sqrt[k]&&i<=Length[primeset],i++,If[Mod[k,primeset[[i]]]==0,flag=False;Break[]]];If[flag,AppendTo[primeset,k]];primeset];primeset]](*重要说明,while为当型循环,执行无穷多次,if为判断,只执行一次*)
- 试除法mathematica程序
(*程序员最忌讳用循环,效率太低了*)DivPrime[n_] := Block[{primeset = {2}, i, j, flag}, If[n == 1, primeset = {}]; For[i = 3, i <= n, i++, flag = True; For[j = 1, primeset[[j]] <= Sqrt[i] && j <= Length[primeset], j++, If[Mod[i, primeset[[j]]] == 0, flag = False; Break[]]]; If[flag == True, AppendTo[primeset, i]]]; primeset](*第一次改进*)DivPrime1[n_] := Block[{primeset = {2, 3}, i}, For[i = 4, i <= n, i++, If[! MemberQ[Mod[i, primeset], 0], AppendTo[primeset, i]]]; primeset](*第二次改进,改进后速度大大提高,n取100000没几秒就出来了*)DivPrime2[n_] := Fold[If[! MemberQ[Mod[#2, #1], 0], Append[#1, #2], #1] &, {2, 3}, Range[4, n]](*总结:能不用循环尽量不用循环,尽可能使用内置函数,多次用到的量要先存起来*)
- 对比matlab素数判断
function isp = primeornot(X)isp = false(size(X));if ~isempty(X) X = X(:); if ~isreal(X) || any(X < 0) || any(floor(X) ~= X) || ... any(isinf(X)) error(message('MATLAB:isprime:InputNotPosInt')); end n = max(X); if isinteger(X) || n <= flintmax(class(X)) if (isa(X,'uint64') || isa(X,'int64')) && n > flintmax p = primes(2.^(nextpow2(n)/2)); else p = primes(cast(sqrt(double(n)),class(X))); end for k = 1:numel(isp) Xk = X(k); isp(k) = (Xk>1) && all(rem(Xk, p(p<Xk))); end else fm = flintmax(class(X)); p = primes(sqrt(fm)); for k = 1:numel(isp) Xk = X(k); isp(k) = (Xk<fm) && (Xk>1) && all(rem(Xk, p(p<Xk))); end endend
更快的素数判断和素数求法等着同学们自己去探索了。
0 0
- mathematica试除法解素数问题
- 素数判定试除法
- 【问题】mathematica 不出图
- 求某区间内的素数(试除法)
- 试除法计算最小的N个素数
- 试除法求最小N个素数之二
- 打印100-200之间的素数(试除法)
- 除法问题
- 除法问题
- 除法问题
- Mathematica解方程
- Mathematica
- Mathematica
- 使用Mathematica解规划模型
- Matlab & Mathematica 解符号方程组
- 用Mathematica解两个圆柱面相贯的交线及其投影的问题
- 九度OJ 1040 Prime Number (筛素数,试除法)
- 素数判定(不用除法和求余)
- notepad++正则匹配及匹配内容的保留与处理
- python sorted
- LeetCode 73. Set Matrix Zeroes(矩阵清零)
- Notepad++正则表达式中几点需要注意的地方
- 全局eval的实现
- mathematica试除法解素数问题
- windows程序设计POPPAD3的关键难点详解(四)
- leetcode #21 in cpp
- LeetCode 74. Search a 2D Matrix(搜索矩阵)
- LeetCode 75. Sort Colors(颜色排序)
- LeetCode 76. Minimum Window Substring(最小窗口子串)
- 关于Gson.jar导入正常使用,代码无错,但程序执行解析时崩溃的一些问题
- leetcode #22 in cpp
- 输入输出外挂总结