#include <iostream>
using namespace std;
int factorial(int n){ //Aprēķina skaitļa faktoriali izsaucot pati sevi
if(n > 1)
return n*factorial(n - 1);
else
return 1;
}
int main(){
int ok;
do{
int n;
cout << "Enter a integer: ";
cin >> n;
int x=factorial(n);
cout << "Factorial=" << x << endl;
for(int a=1;(a+2)<(x/2+1);a++){
if(a*(a+1)*(a+2)==x)
cout << "Equals " << a << "*" << a+1 << "*" << a+2 << endl;
else
cout<<"Cant be a multiplication of 3 numbers"<<endl;
}
cout << " Do you want to continue (1) or end (0)?" << endl;
cin >> ok;
}
while (ok==1);
}
所以我在这段代码中有一个阶乘函数,它检查阶乘是否可以是3个连续数字的乘积
for(int a=1;(a+2)<(x/2+1);a++){
if(a*(a+1)*(a+2)==x)
cout << "Equals " << a << "*" << a+1 << "*" << a+2 << endl;
else
cout<<"Cant be a multiplication of 3 numbers"<<endl;
}
我现在在这部分遇到问题,例如,如果我输入8,它会给出阶乘40320和无限垃圾邮件,“不能是3个数字的乘积”,当我输入1或2时,它也不会垃圾邮件“不能是3个数字的乘积”它只给出阶乘1或2 预先感谢您的帮助!
答案 0 :(得分:2)
您需要在之后添加break;
语句
cout<<"Cant be a multiplication of 3 numbers"<<endl;
我认为输入1或2的问题在于数学计算:
int a=1;(a+2)<(x/2+1);a++;