如何使用返回布尔值的函数?

时间:2020-01-04 14:02:51

标签: c++ function for-loop if-statement

我正在编写一个程序来打印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;
}

2 个答案:

答案 0 :(得分:0)

printprime()中的这一行可能是导致您出现问题的原因:

for ((d < x); d += y;);

后面的分号阻止了for循环的主体执行。

答案 1 :(得分:0)

有几个问题,

  1. dijkstra没有返回计算值bool isprime(int num),而是在所有情况下都返回f
  2. 如果设计者的数量超过2,则可以中断循环,而要进行计算直到最后。
  3. true未从printprime收集返回值

代码段如下,

isprime