编写⼀个程序判断给定的数是否为只包含质因数”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;
}
#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 } }