Arrays 数组中的Pascal最新N素数
我想打印n个素数的数组,比如如果输入是5,那么它将打印[2,3,5,7,11]。 这是我的密码Arrays 数组中的Pascal最新N素数,arrays,pascal,freepascal,Arrays,Pascal,Freepascal,我想打印n个素数的数组,比如如果输入是5,那么它将打印[2,3,5,7,11]。 这是我的密码 program prime; type prime_number = array [1..10] of Integer; var dataset:prime_number; n,i,j,count,angka:Integer; function isPrime(a:Integer): Boolean; var i: Integer; begin for i := 2 to r
program prime;
type
prime_number = array [1..10] of Integer;
var
dataset:prime_number;
n,i,j,count,angka:Integer;
function isPrime(a:Integer): Boolean;
var
i: Integer;
begin
for i := 2 to round(sqrt(a)) do
begin
if(a mod i = 0) then isPrime:=false
else isPrime:=true;
end;
end;
procedure printPrime(a:Integer;var df:prime_number);
var
number,primeCount,i: Integer;
begin
number:=2;
primeCount:=0;
while (primeCount < a) do
begin
if(isPrime(number)) then
begin
for i := 1 to a do
begin
df[i]:=number;
primeCount:=primeCount+1;
end;
end;
number:=number+1;
end;
end;
begin
write('Enter n: ');read(n);
printPrime(n,dataset);
end.
程序素数;
类型
素数=整数的数组[1..10];
变量
数据集:素数;
n、 i,j,count,angka:整数;
函数isPrime(a:整数):布尔型;
变量
i:整数;
开始
对于i:=2到四舍五入(sqrt(a))do
开始
如果(a mod i=0),则isPrime:=false
否则isPrime:=真;
结束;
结束;
过程printPrime(a:整数;var-df:素数);
变量
数字,素数,i:整数;
开始
编号:=2;
primeCount:=0;
而(primeCount
当我运行程序时,它完全正常,但它不会打印任何内容而不是数组:(有人问我的代码有什么问题吗?我发现至少有几个问题 首先,
isPrime
:当您看到某个值除以测试值,a
,您将希望打破循环,因此它应该更像
function isPrime(a:Integer): Boolean;
var
i: Integer;
begin
for i := 2 to round(sqrt(a)) do
begin
if(a mod i = 0) then begin
isPrime:=false;
exit;
end;
end;
isPrime:=true;
end;
然后,在printPrime
中,坦率地说,您有一些奇怪的逻辑
首先,你不能在这个过程中的任何地方打印任何东西
然后,当你找到一个素数时,你将df
中的所有值初始化到该值的大小,为什么不将该值设置为primeCount
procedure printPrime(a:Integer;var df:prime_number);
var
number,primeCount,i: Integer;
begin
number:=2;
primeCount:=0;
while (primeCount < a) do
begin
if(isPrime(number)) then
begin
primeCount:=primeCount+1;
df[primeCount]:=number;
end;
number:=number+1;
end;
end;
过程printPrime(a:整数;var-df:素数);
变量
数字,素数,i:整数;
开始
编号:=2;
primeCount:=0;
而(primeCount
我至少看到了几个问题
首先,isPrime
:当您看到某个值除以测试值,a
,您将希望打破循环,因此它应该更像
function isPrime(a:Integer): Boolean;
var
i: Integer;
begin
for i := 2 to round(sqrt(a)) do
begin
if(a mod i = 0) then begin
isPrime:=false;
exit;
end;
end;
isPrime:=true;
end;
然后,在printPrime
中,坦率地说,您有一些奇怪的逻辑
首先,你不能在这个过程中的任何地方打印任何东西
然后,当你找到一个素数时,你将df
中的所有值初始化到该值的大小,为什么不将该值设置为primeCount
procedure printPrime(a:Integer;var df:prime_number);
var
number,primeCount,i: Integer;
begin
number:=2;
primeCount:=0;
while (primeCount < a) do
begin
if(isPrime(number)) then
begin
primeCount:=primeCount+1;
df[primeCount]:=number;
end;
number:=number+1;
end;
end;
过程printPrime(a:整数;var-df:素数);
变量
数字,素数,i:整数;
开始
编号:=2;
primeCount:=0;
而(primeCount
Woow谢谢你,是的,我忘了制作程序来显示数组中的所有值:)。我现在很好谢谢你,是的,我忘了做一个程序来显示数组中的所有值:)。我现在很好