您的位置:首页 > 其它

codevs 2804 最大最小数质因数 x

2017-04-06 18:57 246 查看
                     题目描述 Description

    先输入n,n<=20;再依次输入n个不同的数,每个数<=1000000;找出最大数和最小数,并输出最大最小数的质因数,没有质因数则输出0。

输入描述 Input Description

数n,空行,输入n个数,每个数中间空行;

输出描述 Output Description

最大数的质因数,每个数中间空格;
最小数的质因数,每个数中间空格.

样例输入 Sample Input

2
15 6

样例输出 Sample Output

3 5
2 3

数据范围及提示 Data Size & Hint

分类标签 Tags 点此展开 

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>

using namespace std;

int n;//n<=20
long long a[21];

bool pd(long long s)//1为真
{
long long j;
if(s==2) return 1;
j=2;
while(s%j!=0&&j<=sqrt(s)) j++;
if(s%j==0) return 0;
else return 1;
}

void print(long long x)
{
long long t=x;
if(x==1||pd(x)||x==0)//如果该数为素数或是为1,0,则没有质因数
{
printf("0\n");
return;
}
for(int i=2;i<=x/2;i++)//分解质因数重要的一步
if(x%i==0&&pd(i))
{
printf("%d ",i);
t=t/i;
if(t==1) break;//不能够继续分解了,跳出
}
printf("\n");
}

int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);//最后一个为最大数,第一个为最小数
print(a
);
print(a[1]);
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: