码迷,mamicode.com
首页 > 其他好文 > 详细

codevs 2804 最大最小数质因数 x

时间:2017-04-06 19:39:59      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:inpu   desc   tag   while   pac   blog   ext   href   amp   

                     题目描述 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[n]);
    print(a[1]);
    return 0;
}

 

codevs 2804 最大最小数质因数 x

标签:inpu   desc   tag   while   pac   blog   ext   href   amp   

原文地址:http://www.cnblogs.com/zxqxwnngztxx/p/6674978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!