将伪代码转换为 C++ 时的无限循环

Infinite loop while converting pseudocode to C++

我在将伪代码转换为 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;
}
    if (i % p == 0) {
        hasfactor = true;
    p++;
    }

应该是

    if (i % p == 0) {
        hasfactor = true;
    }
    p++;