1

感谢您昨晚的帮助,我能够让我的程序正确计算我的输入,但现在我无法正确格式化我的输出。这就是问题:

我的程序应该只在带有素数的行上打印“是素数”。但它会像这样打印在任何一行上:

http://oi42.tinypic.com/30igbvq.jpg

我一生都无法弄清楚为什么会这样做,我的所有功能都应该起作用。

堆栈我再次需要你的帮助!

#include <iostream>
using namespace std;


void primecheck(int x); // proto
void countr(int rnm, int lnm); // proto

void prime(int x) // this function finds the prime factors of a number.
{
int lastr = 2;
int count = 0;
while (lastr < x)
{

    if (x % lastr == 0)
    {
        cout << x << " " << lastr << "*";
        x /= lastr;
    }
    else
        ++lastr;
}
primecheck(x); // calls to check if number is prime, "Is prime"
}


void console(int rnum, int lnum) // this prompts the user for two numbers then stores     the answers
{
cout << "please enter two numbers ";
cin >> rnum;
cin >> lnum;
countr(rnum, lnum);
}

void countr(int rnm, int lnm) // this function loops the prime function until all the        numbers are computed
{ 
int i = rnm;
do{
    prime(i);
    i++;
} while (i <= lnm);
    return;
}


int main() // main, calls console then pauses when finished
{
int e = 0;
int r = 0;
    console(e, r);
    system("PAUSE");
}
void primecheck(int x) // checks to see if then number is prime. if counter is equal to 2 than number is prime.
{
int counting = 0;
for (int a = 1; a <= x; a++)
{
    if (x %a == 0)
    {
        counting++;
    }
}

if (counting == 2)
{
    cout << x << " is prime " << endl;
}
else
{
    cout << x << endl;
}
}
4

1 回答 1

2

/=prime(). 那是一个赋值运算符,正在修改的值x,无论何时调用x都始终为素数。primecheck()

于 2013-09-24T20:56:36.880 回答