最大公约数的最大值

#include <stdio.h>
#include <string.h>
int main()
{
    int i,j,n,m,k,a[100005],b[100005];
    k=0;
    while(scanf("%d",&n)!=EOF)
    {        while(n--)
        {
            memset(b,0,sizeof(b));//将数组初始化
            k++;
            scanf("%d",&m);
            for(i=0;i<m;i++)
            {
                scanf("%d",&a[i]);
            }
            for(i=0;i<m;i++)
            {
                for(j=1;j*j<=a[i];j++) //求出a[i]的因子,跟素数的判定相同,只需到根号a[i];
                {
                    if(a[i]%j==0)
                    {
                        if(a[i]/j==j)
                        {
                            b[j]++;
                        }                             //用b[i]记录i的个数
                        else
                        {
                            b[j]++;
                            b[a[i]/j]++;
                        } 

                    }
                }
            }
            for(i=100000;i>=1;i--)
            {
                if(b[i]>=2)
                {
                    printf("Case #%d: %d\n",k,i);
                    break;
                }
            }    

        }
    }
    return 0;
}
时间: 2024-10-23 23:23:35

最大公约数的最大值的相关文章

51nod 1179 最大的最大公约数

给出N个正整数,找出N个数两两之间最大公约数的最大值.例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5. Input 第1行:一个数N,表示输入正整数的数量.(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= S[i] <= 1000000) Output 输出两两之间最大公约数的最大值. Input示例 4 9 15 25 16 Output示例 5 思路:尝试了两种方法,两种

51nod 1179 最大的最大公约数 一种筛选的方法

1179 最大的最大公约数 题目来源: SGU 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给出N个正整数,找出N个数两两之间最大公约数的最大值.例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5. Input 第1行:一个数N,表示输入正整数的数量.(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= S[i] <= 1000

1179 最大的最大公约数

1179 最大的最大公约数 题目来源: SGU 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 给出N个正整数,找出N个数两两之间最大公约数的最大值.例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5. Input 第1行:一个数N,表示输入正整数的数量.(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= S[i] <= 1000000) Output 输出两两之

最大的最大公约数( 51nod-1179)

妈耶有日期显示啊,我还写什么... 给出N个正整数,找出N个数两两之间最大公约数的最大值. 例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5. Input 第1行:一个数N,表示输入正整数的数量.(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= Sii <= 1000000) Output 输出两两之间最大公约数的最大值. Sample Input 4 9 15 25 16 S

hiho1246(数学求模)

input 1<=n<=2000 a1 a2 ... an 1<=ai<=5*10e7 output n行,第i行指切成i段,每段和的最大公约数的最大值 做法:环形数组切成n段,每段和的最大公约数肯定是总数的约数,然后只要求出每个约数对应的最大段数即可,即前缀和模d出现最多的次数 1 #include <cstdio> 2 #include <queue> 3 #include <cstring> 4 #include <iostream&

[Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535 Description 哈特13最近在学习数论问题,然后他智商太低,并学不懂.这不,他又碰到不会的题了.题意非常简单: 有n个数字,求出这些数字中两两最大公约数的最大值.你一定要帮助他解决这个问题啊. Input 多组输入,约25组,直到文件末尾.每组数据占2行,第一行为数字个数n,2<=n<=100000第二行即为对应

线段树题目总结

一.单点更新 1.hdu1166 敌兵布阵:有N个兵营,每个兵营都给出了人数ai(下标从1开始),有四种命令,(1)"Addij",表示第i个营地增加j人.(2)"Sub i j",表示第i个营地减少j人.(3)"Query ij",查询第i个营地到第j个营地的总人数.(4)"End",表示命令结束.解题报告Here. 2.hdu1754 I Hate It:给你N个数,M个操作,操作分两类.(1)"QAB"

线段树总结 (转载 里面有扫描线类 还有NotOnlySuccess线段树大神的地址)

转载自:http://blog.csdn.net/shiqi_614/article/details/8228102 之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnlySuccess的博文“完全版线段树”里的大部分题目,其博文地址Here,然后也加入了自己做过的一些题目.整理时,更新了之前的代码风格,不过旧的代码仍然保留着. 同样分成四类,不好归到前四类的都分到了其他.树状数组能做,线段树都能做(如果是内存限制例外),所以也有些树状数组的题目,会标示出来,并且放

HDU 5317 RGCDQ(素数个数 多校2015啊)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5317 Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more interesting things about GCD. Today He comes up with Range Greatest Common Divisor Query (R