2816: 练46.2 求丑数

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:15 解决:3

题目描述

我们把只包含因子$2$、$3$和$5$的数成为丑数。例如$6$、$8$都是丑数,但$14$不是,因为它包含因子$7$。习惯上,我们把$1$当作是第一个丑数。
先定义一个判断丑数的函数,利用它输出$1\sim 100$之间所有的丑数,并统计出个数。

输入

输出

输出分为两部分:
第一部分,输出$1\sim 100$之间所有的丑数,一行$10$个整数,每个整数占$6$个字符。
第二部分,先输出"个数:",输出$1\sim 100$之间的丑数个数。

样例输入 复制

样例输出 复制

1     2     3     4     5     6     8     9    10    12
15    16    18    20    24    25    27    30    32    36
40    45    48    50    54    60    64    72    75    80
81    90    96   100
个数:34

提示

#include<iostream>
#include<iomanip>
using namespace std;
bool choushu(int n){ //求丑数
    while(n%2==0) //包含因子 2
    n/=2;
    while(n%3==0) //包含因子 3
    n/=3;
    while(n%5==0) //包含因子 5
    n/=5;
    return (n==1); //是否是丑数
}
int main(){
    int num=0;
    for(int i=1;i<=100;i++)
        if(choushu(i))
        {
            cout<<setw(6)<<i; //每个数占 6 个字符
            num++;
            if(!(num%10)) cout<<endl; //换行
        }
    cout<<endl;
    cout<<"个数:"<<num<<endl; //输出个数
    return 0;
}