题目描述 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
无
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int a[10000002]; void shai() { for(int i=2;i<=sqrt(10000000)+0.5;i++) { if(a[i]==0) { for(int j=i*i;j<=10000000;j+=i) a[j]=1; } } } int main() { int n,m; int maax,miin; int maxx,minn; shai(); scanf("%d",&n); miin=11111110; maax=-1; int i=1; while(i<=n) { cin>>m; if(m<miin)miin=m; if(m>maax)maax=m; i++; } if(a[maax]==0) cout<<0<<endl; else for(int i=2;i<maax;i++) { if(maax%i==0&&a[i]==0) { printf("%d ",i); } } cout<<endl; if(miin==1)cout<<0<<endl; else if(a[miin]==0)cout<<0; else for(int i=2;i<miin;i++) { if(miin%i==0&&a[i]==0) { printf("%d ",i); } } return 0; }