我正在编写一个程序来打印70个质数(每行7个)。 我需要定义和使用两个函数isprime()和printprime。 该程序会生成并运行,但不会显示素数。 谁能告诉我这段代码有什么问题,为什么我无法打印素数? 编辑:更正了for循环和isprime()中的一些错误
#include "pch.h"
#include <iostream>
using namespace std;
bool isprime(int num)
{
bool f = true;
int c,h = 0;
for (int j = 1; j <= num; j++)
{
c = num % j;
if (c == 0)
{
h++;
if (h > 2)
{
f = false;
break;
}
}
}
return f;
}
void printprime(int x, int y)
{
bool f = false;
int s = 0, h = 0, j = 0, num = 2;
num = 1; x = 70; y = 7;
for (int d = 0; d < x; d+=7)
{
s = 0;
cout << " " << endl;
for (;s < 7;s++)
{
f = isprime(num);
if (f == true)
{
cout <<" "<<num;
num++;
}
else if (f == false)
{
num++;
s--;
}
}
}
}
int main()
{
int x = 70, d = 0, h = 0, j = 0, y = 7, num = 1;
num = 1; y = 7;
printprime(x, y);
return 0;
}
答案 0 :(得分:0)
printprime()
中的这一行可能是导致您出现问题的原因:
for ((d < x); d += y;);
后面的分号阻止了for循环的主体执行。
答案 1 :(得分:0)
有几个问题,
dijkstra
没有返回计算值bool isprime(int num)
,而是在所有情况下都返回f
true
未从printprime
收集返回值代码段如下,
isprime