如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13.试求出所有二位绝对素数(一行一个绝对素数),结果就是输出所有的二位绝对素数.shuru111317313771737997请给
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 05:59:19
如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13.试求出所有二位绝对素数(一行一个绝对素数),结果就是输出所有的二位绝对素数.shuru111317313771737997请给
如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13.
试求出所有二位绝对素数(一行一个绝对素数),结果就是输出所有的二位绝对素数.
shuru
11
13
17
31
37
71
73
79
97
请给正确的、现试验一下在发.
一定得自编的
如果正确加悬赏哟
如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13.试求出所有二位绝对素数(一行一个绝对素数),结果就是输出所有的二位绝对素数.shuru111317313771737997请给
我用VBA写的,算不算?
Sub 全部2位绝对素数()
s = "shuru"
For I = 1 To 3 Step 2
For j = 1 To 9 Step 2
If 素数判断(10 * I + j) And 素数判断(10 * j + I) Then s = s & Chr(13) & IIf(I = j, I & j, I & j & Chr(13) & j & I)
Next j, I
MsgBox s
End Sub
Function 素数判断(I%) As Boolean
If I Mod 2 = 0 Then 素数判断 = False: Exit Function
For j = 3 To I / 2
If I Mod j = 0 Then 素数判断 = False: Exit Function
Next
素数判断 = True
End Function
var
a,k,i,w,sum,x:longint;
s:array[1..8363]of longint;
e:array[1..8363]of boolean;
st:string;
b:array[1..5]of char;
flag:array[0..9]of boolean;
c:array[1..120]of string;
全部展开
var
a,k,i,w,sum,x:longint;
s:array[1..8363]of longint;
e:array[1..8363]of boolean;
st:string;
b:array[1..5]of char;
flag:array[0..9]of boolean;
c:array[1..120]of string;
procedure search(depth:integer);
var i,t:integer;
begin
if(depth>a) then
begin
inc(x);
for i:=1 to a do c[x]:=c[x]+b[i];
exit;
end;
for i:=1 to a do
if flag[i]=false then
begin
b[depth]:=st[i];
flag[i]:=true;
search(depth+1);
flag[i]:=false;
end;
end;
function erfen(o:string):boolean;
var
m,head,tail,j:longint;
begin
val(o,m);
head:=1;
tail:=w;
j:=trunc((head+tail)/2);
repeat
if s[j]=m then exit(false)
else
if s[j]>m then
begin tail:=j-1; j:=trunc((head+tail)/2) end
else if s[j]
until (head>tail);
exit(true);
end;
procedure checks(w:longint);
var
i,j:longint;
begin
for i:=1 to w do
begin
str(s[i],st);
x:=0;
search(1);
for j:=1 to k do
if erfen(c[j]) then e[i]:=false;
for j:=1 to k do
c[j]:='';
end;
end;
function check(w:longint):boolean;
var
i:longint;
begin
for i:=2 to round(sqrt(w)) do
if w mod i =0 then exit(false);
exit(true);
end;
procedure trys(a:longint);
var
i,j,head,tail:longint;
begin
tail:=9;
head:=1;
w:=0;
for i:=1 to a-1 do
begin
head:=head*10;
tail:=tail*10+9;
end;
for i:=head to tail do
if check(i) then begin inc(w);s[w]:=i; end;
checks(w);
for i:=1 to w do
if e[i] then inc(sum);
write(sum);
end;
begin
k:=1;
fillchar(e,sizeof(e),true);
readln(a);
for i:=2 to a do
k:=k*i;
if a=1 then write(4)
else if a<5 then trys(a)
else if a=5 then write(0);
end.
收起