codevs 2804 最大最小数质因数 x

题目描述 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;
}
时间: 2024-12-08 00:24:02

codevs 2804 最大最小数质因数 x的相关文章

codevs:1792分解质因数:编写一个把整数N分解为质因数乘积的程序。

#include<iostream>#include<cstdio>using namespace std;int main(){ int i=2,n; scanf("%d",&n); printf("%d=",n); if(n<=3){ printf("%d",n); return 0; } while(i<=n/2) { if(n%i==0) { printf("%d*",i);

Codevs 1313 质因数分解

1313 质因数分解 题目描述 Description 已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 . 输入描述 Input Description 输入只有一行,包含一个正整数 n. 输出描述 Output Description 输出只有一行,包含一个正整数p,即较大的那个质数. 样例输入 Sample Input 21 样例输出 Sample Output 7 #include<iostream> #include<cstdio> #include<cm

codevs 1792 分解质因数

1792 分解质因数 题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描述 Input Description 输入一个整数 N 输出描述 Output Description 输出 分解质因数 .拆成几个质数相乘的形式,质数必须从小到大相乘 样例输入 Sample Input 756 样例输出 Sample Output 756=2*2*3*3*3*7 #include<cstdio> #include<cmath> #include<str

codevs 3164 质因数分解

3164 质因数分解 #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<stack> #include<cmath> using namespace std; int T; int main() { scanf("%d",&T); for(int i=1;i<=T;i++){ long long

codevs:1313 质因数分解:已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 。

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int a[2];int main(){ int p,b=0; scanf("%d",&p); for(int i=2;i<=p/2;i++) { if(p%i==0) { printf("%d",p/i); return 0; } }}

POJ 1142 Smith Numbers(分治法+质因数分解)

http://poj.org/problem?id=1142 题意: 给出一个数n,求大于n的最小数,它满足各位数相加等于该数分解质因数的各位相加. 思路:直接暴力. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 #include <queue> 6 #include <cmath> 7 using nam

HDU-3189-Just Do It【分解质因数】

3189-Just Do It Problem Description Now we define a function F(x), which means the factors of x. In particular, F(1) = 1,since 1 only has 1 factor 1, F(9) = 3, since 9 has 3 factors 1, 3, 9. Now give you an integer k, please find out the minimum numb

【BZOJ2227】【ZJOI2011】看电影 [组合数学][质因数分解]

看电影 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特殊,具体方式如下: 1. 电影院的座位共有K个,并被标号为1…K,每个人买完票后会被随机指定一个座位,具体来说是从1…K中等可能的随机选取一个正整数,设其为L.

[ CodeVS冲杯之路 ] P2492

不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直接树状数组(以下简称BIT)维护,修改操作就一个个暴力开方搞,再用差值单点更新BIT 不过这样会TLE,要加一点优化对不对,正如开头所说的路径压缩链表 路径压缩链表其实就是个并查集,在普通的链表里,删去两个连续的节点后会是下面这种情况,如删去2,3 当访问 2 的时候,会跳到3,但 3 已经删除了,