我在将伪代码转换为C ++时遇到了麻烦,因为当我运行程序时,我似乎被困在一个无限循环中。
这是函数的伪代码:
kN ← n*200
c ← 0
for i from 2 to kN
f ← false
j←2
while (j < p and not(f))
if (i%p = 0)
f ← true
p ← p + 1
done
if (not f)
print i
c ← c + 1
end if
end for
print c
return c
这是我的尝试:
int primes(int n){
int kN = (n*200);
int c = 0;
for (int i = 2; i < kN; i++){
bool f = false;
int j = 2;
while (p < i && f == false){
if (i % p == 0) {
f = true;
p++;
}
}
if (f == true) {
c << i;
c++;
}
}
cout << c;
return c;
}
答案 0 :(得分:1)
if (i % p == 0) {
hasfactor = true;
p++;
}
应该是
if (i % p == 0) {
hasfactor = true;
}
p++;