那我问你:
3、13、113、2113、12113、紧接着的应该是 612113, 而你给的是 1112113 ,怎么解释 3、13、113、2113、12113、1112113……
比如上面的数列的意思是,我给出一个素数A(假设它是个5位数),我想找出下一个素数B(此时B的位数大于5位),B的后面5位数就是前面的A。具体就比如113与2113,2113的后面3位 ...
liexi20101117 发表于 2012-9-18 16:56 http://bbs.emath.ac.cn/images/common/back.gif
我刚学习了两天sciab,想尝试一下。不过scilab貌似没有素数测试模块....
按照你这个要求,我写了一个很低级的代码://我的第四个scilab程序
//输出素数数列,其中第n个的后n-1位是数列中的第n-1个数
//完成于2012.09.28
function p=prime(x)
p=1
for i=3:2:x^0.5;
if modulo(x,i)==0 then
p=0;
break
end
end
endfunction
//上面定义素数检测函数
a=3
j=1;
a=13;
while j<8
if prime(a)==1
a
j=j+1;
a=a+10^j;
else
a=a+10^j;
end
end
输出结果是
a=
3.
a=
13.
a=
113.
a=
2113.
a=
12113.
a=
612113.
a=
11612113.
a=
71612113.
剩下的工作只是优化程序而已,基本的思路就是这样啦
要是7开头的话,那就是
a=
7.
a=
17.
a=
317.
a=
6317.
a=
26317.
a=
126317.
a=
2126317.
a=
72126317. 顺便请教各位高手如何在scilab中快速进行素性测试? 已经知道k位奇素数a,求最小的正整数n使得$n*10^k+a$为素数,对于较大的k,可以利用筛选法加速。
比如制作一个8k大小的比特位缓冲区,全部初始化为0,
然后对于每个小素数p,$p!=a$,计算$h -= -a*10^-k(mod p)$
然后将缓冲区中$h+s*p$形式的位置全部置为1。
最后,如果缓冲区中还存在比特位0,对对应的数判断是否素数。
如果没有找到素数,重新开始筛选下一个8k位置 13# 282842712474
scilab完全模仿MATLAB,它也有工具箱的。
可以在官网下载:
http://atoms.scilab.org/toolboxes/number
* number_isprime — Checks if a number is prime.
* number_probableprime — Check if a number is a probable prime. 谢谢wayne老师指出我的错误,也谢谢上面那位给的一段代码。 1# liexi20101117
真对不住,想看代码,需要积分
页:
1
[2]