作业帮 > 综合 > 作业

pascal纯粹素数纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 07:10:28
pascal纯粹素数
纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数.这样下去一直到最后剩下的个位数也还是素数.求出所有小于3000的四位的纯粹素数.
输入

输出
按从小到大的顺序输出若干个纯粹素数,每行一个.
在这里个位数是1也算素数
对于这个题,依稀记得我之前曾回答过,于是找了一下,确实有!
我又看了一下原先的解题,应该还是好理解的,这里附上链接:
http://zhidao.baidu.com/question/551794357.html?oldq=1
原题的数据范围比你的大得多,而且有一点不同,就是你的要求是“求出所有小于3000的四位的纯粹素数”,因此有一些地方要改动一下.
修改后的代码如下:
var i,j,n,t,code:longint;
s:string;
prime:array[2..3000]of boolean;
begin
fillchar(prime,sizeof(prime),true);
readln(n); //这里令n=3000;
for i:=2 to trunc(sqrt(n)) do
if prime[i] then
begin
for j:=2 to n div i do
prime[i*j]:=false;
end; //经过如此,每一个素数对应的数组元素都是true;
for i:=1001 to n do
if prime[i] then
begin
t:=i;
while t>0 do
begin
str(t,s);
delete(s,1,1);
val(s,t,code); //这里用了一个小技巧,运用字符串函数 str 和 val 删去了 t 的最高位.
if not prime[t] then break;
end;
if t