13
题目描述
给出一个数x,判断它是否为素数,并输出所有它的素因子。
输入描述:
第1行输入组数T,代表有T组数据。
第2-T+1行每行输入一个数x表示对应询问。
数据保证:2≤x≤109
输出描述:
对于每组询问输出两行表示结果。
第1行,如果x是素数,输出“isprime”(不含双引号),否则输出“noprime”(不含双引号)。
第2行,输出x的素因子。
#include<iostream>
using namespace std;
int hanshu(int n)
{
if(n<2)
{return 0;}
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{return 0;} //返回值为0,代表其不是素数
}
return 1; //否则是素数
}
void hanshu2(int n)
{
for(int i=2;i*i<=n;i++)
{
int f=0;
while(n%i==0)
{
if(f==0)
{
cout<<i<<" ";
f=1;
}
n/=i;
}
}
if(n>1){
cout<<n<<" ";
}
cout<<endl;
}
int main(){
int n;
cin>>n;
for(int j=0;j<n;j++){
int m;
cin>>m;
if(hanshu(m)){
cout<<"isprime"<<endl;
}
else{
cout<<"noprime"<<endl;
}
hanshu2(m);
}
}