1 系统的基本功能 所谓丑数,是指因子只含2,3,5的数。编写一个程序,求第1500个只有2,3,5因子的数。

2 要求及提示数是从小到大排列的,第一个数是1,1 = 20 * 30 * 50。2.1 程序执行过程本题目不需要从键盘读入数据。结果输出时,为便于观察,要求以连乘的形式打印到屏幕上,格式如下(假设,x为找到的数,a、b、c为2、3、5的个数): The 1500th number is x.x = 2^a * 3^b * 5^c2.2 算法要求及提示(1)本题描述的实际上是一个数列,这个数列如下: 1,2,3,4,5,6,8,9,10…… 1 = 20 * 30 * 50 2 = 21 * 30 * 50 3 = 20 * 31 * 504 = 22 * 30 * 50 5 = 20 * 30 * 51 6 = 21 * 31 * 50 8 = 23 * 30 * 50 9 = 20 * 32 * 50 10 = 21 * 30 * 51 。。。。。。 题目要求的是该数列的第1500项。(2)求解该问题时,比较有效的一个方法是,设一个变量n,和一个计数器count,count初始值为0。n从1开始,判断n的质因数是不是只有2、3和5。如果是说明n是数列中的数,count = count + 1;否则不是。然后n = n + 1,再重新判断,直至count = 1500。用C++求
2026年09月19日 21:25
有1个网友回答
网友(1):

#include
#include

int main()
{
int count = 0;
int num = 2*3*5;
int i=0,j=0,k=0;
while(count < 1500) {
int tmp = num++;

i=0,j=0,k=0;

if(tmp % (2*3*5)) {
continue;
}

while(!(tmp % 2)) {
i ++;
tmp = tmp /2;
}

while(!(tmp % 3)) {
j ++;
tmp = tmp /3;
}

while(!(tmp % 5)) {
k ++;
tmp = tmp /5;
}

count ++;
//printf("The %dth number is x. x=2^%d*3^%d*5^%d\n", count, i, j, k);
}

printf("The %dth number is x. x=2^%d*3^%d*5^%d\n", count, i, j, k);
return 0;
}

c版本,改成c++很容易。