问题 : 只包含因子2 3 5的数

题目描述
K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。
所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。
例如:n = 13,S中 >= 13的最小的数是15,所以输出15。
输入
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行1个数N(1 <= N <= 10^18)
输出
共T行,每行1个数,输出>= n的最小的只包含因子2 3 5的数。
样例输入
5
1
8
13
35
77
样例输出
2
8
15
36
80

AC代码

#include <iostream>

using namespace std;

int main() {
    int T,n;
    cin>>T;
    while(T--) {
        cin>>n;
        int i=n,flag=1,itemp,temp;
        if(n==1){
            i=2;
            flag=0;
        }
        while(flag) {
            itemp=i;
            for(int j=2;j<=itemp&&itemp>1;) {
                temp=1;
                if(itemp%j==0){
                    if(j!=2&&j!=3&&j!=5) {
                        i++;
                        temp=0;
                        break;
                    }
                    itemp=itemp/j;
                }else
                    j++;
            }
            if(temp)
                flag=0;
        }
        if(T>0)
            cout<<i<<endl;
        else
            cout<<i;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36172505/article/details/77140682