给出一个数x,判断它是否为素数,并输出所有它的素因子。
#include<iostream>
#include<cmath>
using namespace std;
int panduan(long num)
{
if(num==1||num==4)
return 0;
if(num==2||num==3)
return 1;
if(num%2==0)
return 0;
int temp=sqrt(num);
for(int i=3;i<=temp;i+=2)
if(num%i==0)
return 0;
return 1;
}
void suyinshu(int a)
{
int s[100]={0};
int d=0;
for(int i=2;i<a;i++)
{
if(a%i==0)
{
a=a/i;
s[d]=i;
d++;
i=1;
}
if(panduan(a)==1)
{
s[d]=a;
break;
}
}
void quchong(int s[],int n);
quchong(s,d);
}
void quchong(int s[],int n)
{
int c=0;
int b[1000]={0};
b[0]=s[0];
for(int i=0;i<=n;i++)
{
if(s[i]==0) continue;
if(b[c]!=s[i])
{
c++;
b[c]=s[i];
}
}
for(int i=0;i<=c;i++) cout<<b[i]<<" ";
}
int main()
{
long n,a;
cin>>n;
while(n--)
{
cin>>a;
int b=a;
if(panduan(a)==1)
{
cout<<"isprime"<<endl;
cout<<a;
}
else
{
cout<<"noprime"<<endl;
suyinshu(a);
}
cout<<endl;
}
return 0;
}
#include<cmath>
using namespace std;
int panduan(long num)
{
if(num==1||num==4)
return 0;
if(num==2||num==3)
return 1;
if(num%2==0)
return 0;
int temp=sqrt(num);
for(int i=3;i<=temp;i+=2)
if(num%i==0)
return 0;
return 1;
}
void suyinshu(int a)
{
int s[100]={0};
int d=0;
for(int i=2;i<a;i++)
{
if(a%i==0)
{
a=a/i;
s[d]=i;
d++;
i=1;
}
if(panduan(a)==1)
{
s[d]=a;
break;
}
}
void quchong(int s[],int n);
quchong(s,d);
}
void quchong(int s[],int n)
{
int c=0;
int b[1000]={0};
b[0]=s[0];
for(int i=0;i<=n;i++)
{
if(s[i]==0) continue;
if(b[c]!=s[i])
{
c++;
b[c]=s[i];
}
}
for(int i=0;i<=c;i++) cout<<b[i]<<" ";
}
int main()
{
long n,a;
cin>>n;
while(n--)
{
cin>>a;
int b=a;
if(panduan(a)==1)
{
cout<<"isprime"<<endl;
cout<<a;
}
else
{
cout<<"noprime"<<endl;
suyinshu(a);
}
cout<<endl;
}
return 0;
}