Har*_*tea 1 pascal freepascal pascalscript turbo-pascal
我在 PAscal 中遇到了问题。我想计算素数但没有结果:我的代码是:
Program arrayToFunction;
const
size = 5;
type
a = array [1..size] of integer;
var
aNumbers: a = (1, 7, 3, 4, 5);
iCountNumbers: integer;
function countPrimeNumbers( var arr: a) : integer;
var
i :0..size;
sum,j,count: integer;
begin
sum := 0;count:=0;
for i := 0 to size do
begin
for j := 2 to arr[i] do
begin
if(arr[i] mod j = 0) then sum:=1;
end;
if(sum=0) then count:=count+1;
end;
countPrimeNumbers := count;
end;
begin
iCountNumbers := countPrimeNumbers( aNumbers ) ;*)
writeln( 'Numbers: ', iCountNumbers);
readln;
end.
Run Code Online (Sandbox Code Playgroud)
对于这个数组,我想得到 3,但得到 2...我不明白我的问题在哪里。请帮帮我
小智 5
你有type a = array [1..size] of integer;,但随后你使用for i := 0 to size. 下标需要匹配声明的范围。
您sum := 0;在进入该循环之前进行设置,但永远不会再次将其设置为零。一旦你找到一个非质数,你就会设置sum := 1;,它就会留在那里。一旦检测到非质数,就永远不会检测到质数。
您发现的两个素数是 处的任何垃圾arr[0],以及 1 处的 1 arr[1]。请注意,1不是素数,但您的代码会得出结论。7是质数,但您的代码会认为它不是,因为它最终会注意到它可以被自身整除。
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |