素数判断

链接:https://ac.nowcoder.com/acm/contest/93963/B链接:https://ac.nowcoder.com/acm/contest/93963/B

来源:牛客网

题目描述

给出一个数x,判断它是否为素数,并输出所有它的素因子。

输入描述:

第1行输入组数T,代表有T组数据。

第2-T+1行每行输入一个数x表示对应询问。

数据保证:2≤x≤109

输出描述:

对于每组询问输出两行表示结果。

第1行,如果x是素数,输出“isprime”(不含双引号),否则输出“noprime”(不含双引号)。

第2行,输出x的素因子。

示例1

输入

复制

3

2

9

10

输出

复制

isprime

2

noprime

3

noprime

2 5

#include<iostream>

#include<set>

using namespace std;

bool isPrime(int n) {

if (n <= 1) return false;

for (int i = 2; i * i <= n; i++) {

if (n % i == 0) return false;

}

return true;

}

void findPrimeFactors(int n) {

set<int> factors;

for (int i = 2; i * i <= n; i++) {

while (n % i == 0) {

factors.insert(i);

n /= i;

}

}

if (n > 1) factors.insert(n);

for (int factor : factors) {

cout << factor << " ";

}

cout << endl;

}

int main(){

int g;

cin >> g;

while (g--) {

int n;

cin >> n;

if (isPrime(n)) {

cout << "isprime" << endl << n << endl;

} else {

cout << "noprime" << endl;

findPrimeFactors(n);

}

}

return 0;

}

这道题通过询问同学了解到了set函数

可以使用set避免输出相同的数据

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务