给定正整数n,对n执行任意次下列操作:
1)如果n是2的倍数,用n/2代替n
2)如果n是3的倍数,用2n/3代替n
3)如果n是5的倍数,用4n/5代替n
例如当n=30时,可以根据规则1变为15,或者根据规则2变为20,或者根据规则3变为24。
那么从n开始,通过执行上述操作最终是否可以得到1?如果可以得到1,那么最少需要多少次上述操作?
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
#include <stdio.h>
int main(void)
{
int n,i=0;
scanf("%d",&n);
while (n!=1)
{
if (n%2==0)
n = n/2;
else if (n%3==0)
n = 2*n/3;
else if (n%5==0)
n = 4*n/5;
else {
printf("n为%d, 不是2/3/5的倍数",n);
return 0;
}
i++;
}
printf("%d",i);
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int count = 0;
int n;
cin >> n;
while (n != 1)
{
if (n % 2 == 0)
{
n /= 2;
count++;
}
else if (n % 3 == 0)
{
n = 2 * n / 3;
count++;
}
else if (n % 5 == 0)
{
n = 4 * n / 5;
count++;
}
}
cout << count;
}