素数环 问题描述 把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
答案:2 悬赏:0 手机版
解决时间 2021-04-03 02:54
- 提问者网友:火车头
- 2021-04-02 17:54
素数环 问题描述 把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
最佳答案
- 五星知识达人网友:孤老序
- 2021-04-02 18:33
我写过C的。。
全部回答
- 1楼网友:你哪知我潦倒为你
- 2021-04-02 19:00
const max=100;
var a:array[1..max] of longint;
procedure print;
var i:longint;
begin
for i:=1 to 15 do
write(a[i]:3);
writeln;
end;
function fac(p,q:longint):boolean;
var n,i:longint;
begin
n:=p+q;
fac:=true;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then
begin
fac:=false;
break;
end;
end;
function fac1(n,k:longint):boolean;
var i:longint;
begin
fac1:=true;
for i:=k-1 downto 1 do
if a[i]=n then
begin
fac1:=false;
break;
end;
end;
procedure work(n:longint);
var i,t:longint;
begin
if n>15 then
if fac(a[15],a[1]) then
print
else for i:=2 to 15 do
if fac(i,a[n-1]) and fac1(i,n-1) then
begin
a[n]:=i;
work(n+1);
end;
end;
begin
a[1]:=1;
work(2);
end.
var a:array[1..max] of longint;
procedure print;
var i:longint;
begin
for i:=1 to 15 do
write(a[i]:3);
writeln;
end;
function fac(p,q:longint):boolean;
var n,i:longint;
begin
n:=p+q;
fac:=true;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then
begin
fac:=false;
break;
end;
end;
function fac1(n,k:longint):boolean;
var i:longint;
begin
fac1:=true;
for i:=k-1 downto 1 do
if a[i]=n then
begin
fac1:=false;
break;
end;
end;
procedure work(n:longint);
var i,t:longint;
begin
if n>15 then
if fac(a[15],a[1]) then
else for i:=2 to 15 do
if fac(i,a[n-1]) and fac1(i,n-1) then
begin
a[n]:=i;
work(n+1);
end;
end;
begin
a[1]:=1;
work(2);
end.
参考资料:你同学
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯