zoukankan      html  css  js  c++  java
  • 素数链

    素数链
    设计程序将1。。。n(20)排成一排,使任意两个相邻的数的和为素数。第1个和最后一个的和也为素数.
    输出:第一个数为1.
    如:
    样例输入:
    6
    样例输出:
    1 4 3 2 5 6
    主程序
    b[1..maxn]:记录结果序列。
    Visited[1..maxn]: 标记是否已用过
    •fillchar(visited,sizeof(visited),0);
    •      b[1]:=1;
    •      visited[1]:=1;
    •      dfs(1,1);
    搜索过程
    •procedure dfs(i,k:integer); //已找到第k个数是i,找第k+1个
    •  var j:integer;
    •    begin
    •      if (n=k)and(check(b[1]+b[k])) then print(1);
    •      for j:=1 to n do
    •        if (visited[j]=0) and (check(i+j)) then
    •          begin
    •            visited[j]:=1;
    •            b[k+1]:=j;
    •            dfs(j,k+1);
    •            visited[j]:=0;
    •          end;
    •    end;
    判读素数
    •function check(i:integer):boolean;
    •    var j:integer;
    •    begin
    •        for j:=2 to i-1 do
    •           if  i mod j=0 then   exit(false);
    •        exit(true);
    •    end;
    优化:建立素数表
    •maxn
    •Prime[3..2*maxn-1]: boolean
    •素数:true;非素数:false
    •筛选法建立素数表
    筛选法求素数
    •for i:=1 to n do prime[i]:=true;
    •    prime[1]:=false;
    •    for i:=2 to trunc(sqrt(n)) do
    •       if prime[i] then
    •          begin
    •              j:=2*i;
    •              while j<=n do
    •                  begin  prime[j]:=false; j:=j+i; end;
    •          end;
     
  • 相关阅读:
    jQuery
    前端开发之JavaScript篇
    前端开发之css篇
    前端开发之html篇
    mysql续
    MySQL入门
    进程线程协程那些事儿
    Python之socket网络编程
    2016.6.24——vector<vector<int>>【Binary Tree Level Order Traversal】
    2016.6.21——Climbing Stairs
  • 原文地址:https://www.cnblogs.com/vacation/p/4913872.html
Copyright © 2011-2022 走看看