成都银行2016年年报:急求判断素数的好方法

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 17:07:08
最好有pascal的源码

如果楼主问的不是初学者的问题的话,建素数表可以逆用费尔马小定理,多试几个底,虽然有几率但是错误率很小的

1.数据小的话,可以用数学方法做,看这个数的因数个数是不是2个,如果小于或大于两个就不是素数了.
2.如果数据不小就要用计算机来做了,编一个程序,输入一个数N,从2开始一直到N的平方根(取整),看有没有数能被N整除尽,如有就不是素数,如没有就表示N它就是个素数.
附上程序:
INPUT N
FOR I=2 TO SQR(N)
IF N MOD I=0 THEN PRINT "NO":END
NEXT I
我的程序也是输出YES或N来判断是不是素数的

PRINT "YES"

如果数很大的话没有什么好的方法,
只有用电脑

program aa;
var
a,i:longint;
begin
readln(a);
if a>2 then
for i:=2 to round(sqrt(a)) do
if ( a mod i)=0 then writeln('no!') else writeln('yes!');
end.

我这个程序是输出YES或NO来判断是不是质数

通常没有一个OI问题会用到大于longint的质数判断。
可以去2到sqrt(num)逐一去试除。
如果需要在程序中多次进行判断,可以先建一个质数表。
建质数表有两种方法,第一是从2到maxint逐一试,然后建表,另一种是筛子发,就是先过滤2的倍数,然后过滤3的倍数,然后过滤5的倍数,……知道2到maxint都被过一遍,余下的就是质数。