首页 > 试题广场 >

编写⼀个程序判断给定的数是否为只包含质因数”2,3,5”的正

[问答题]
编写⼀个程序判断给定的数是否为只包含质因数”2,3,5”的正整数
例:
输⼊     输出           解释 
6          true         6 = 2 x 3 
10        true        10 = 2 x 5 
21        false       21 = 3 x 7

https://blog.csdn.net/wi8ruk48/article/details/84945350


#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <set>
#include <math.h>
#include <iterator>

using namespace std;


const int MaxS = 100 + 10;

struct FactorNode {
    int x;
    int cnt;
}factor[10];


int prime[MaxS];
bool mark[MaxS];
int primeSize = 0;


void FindPrime() {
    for (int i = 2;i < MaxS;i++) {
        if (mark[i] == true) continue;
        prime[primeSize++] = i;
        for (int j = i*i;j < MaxS;j += i) {
            mark[j] = true;
        }
    }
}

bool IsPrime(int x) {
    if (x == 1) return false;
    int bound = (int)sqrt(x) + 1;
    for (int i = 2;i < bound;i++) {
        if (x % i == 0)  return false;
    }
    return true;
}




int main()
{
    freopen("Text.txt", "r", stdin);
    FindPrime();
    int n = 0, num = 0;
    while (scanf("%d", &n) != EOF) {
        num = 0;
        if (n == 1) {
            printf("false\n");
            continue;
        }
        int bound = (int)sqrt(1.0*n) + 1;
        for (int i = 0;i < MaxS&&prime[i] < bound;i++) {
            if (n%prime[i] == 0) {
                factor[num].x = prime[i];
                factor[num].cnt = 0;
                while (n%prime[i] == 0) {
                    factor[num].cnt++;
                    n = n / prime[i];
                }
            }
            num++;
            if (n == 1) break;
        }
        if (n != 1) {
            factor[num].x = n;
            factor[num++].cnt = 1;
        }
        set<int> s1, s2;
        s1.insert(2);
        s1.insert(3);
        s1.insert(5);
        for (int i = 0;i < num;i++) {
            s2.insert(factor[i].x);
        }
        set<int> result;
        set_difference(s2.begin(), s2.end(), s1.begin(), s1.end(), inserter(result, result.begin()));
        if (result.empty() == true) {
             printf("true\n");
        }
        else  printf("false\n");
    }
    return 0;
}
发表于 2018-12-10 19:59:36 回复(0)
#include<iostream>

int main()
{
    int Num;
    if(Num==1)
    {
         std::cout<<"false";
     }
    while(std::cin<<Num)
    {
     int temp;
     int ans = Num/temp; 
     int yushu = Num%temp;
     temp = 5;
     while(yushu==0)
        {
            ans = Num/temp; 
            yushu = Num%temp;
        }
        if(ans==1)
        {
            std::cout<<"true";
            return 0;
        }
        temp = 3
    }   
}

发表于 2018-12-10 10:13:20 回复(0)