我正在尝试编写执行以下操作的代码:
将整数的数字相乘并继续该过程,将得出令人惊讶的结果,即乘积序列始终以一位数字出现。
例如:
715-> 35-> 15-> 5
88-> 64-> 24-> 8
27-> 14-> 4
达到一位数所需的乘积数称为该整数的持久性数。因此,715和88的持久性数为3,而27的持久性数为2。编写一个程序,查找持久性大于3的唯一两位数?
我能够提出一个大概的想法,下面是代码,但它似乎不起作用:
#include <iostream>
using namespace std;
/*
*
*/
int PersistentNum(int digit)
{
int x;
int pers = 0;
int y = 1;
while(x > 9)
{
do {
x = digit % 10;
y = y * digit;
x = x / 10;
} while(x > 0);
pers++;
x = y;
}
return pers;
}
int main()
{
int repNum;
int Persist;
cout << "Please enter a non-zero, positive integer: ";
cin >> repNum;
Persist = PersistentNum(repNum);
cout << " the Persistence of " << repNum <<" is " << Persist;
return 0;
}
最佳答案
您每次都必须分配和,因为它保留了原来的已乘值。
您也弄乱了原始代码中x和数字的含义
代替
func(int x)
你写了
func(int digit)
更正的代码
#include <iostream>
using namespace std;
/*
*
*/
int PersistentNum(int x)
{
int digit;
int pers = 0;
int y =1 ;
while(x > 9)
{
y = 1;
do{
digit = x % 10;
y = y* digit;
x = x/10;
}while(x > 0);
pers++;
x = y;
}
return pers;
}
int main()
{
int repNum;
int Persist;
cout<<"Please enter a non-zero, positive integer: ";
cin>>repNum;
Persist = PersistentNum(repNum);
cout<< " the Persistence of " << repNum <<" is " << Persist;
return 0;
}