问题标题: 酷町堂:1062 寻找质因数

0
1
已解决
许金夫
许金夫
初级天翼
初级天翼

这个在天梯里太烦了

 

 

1062   寻找质因数

题目描述 Description

为了迎接国庆,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:寻找质因数。老师会让若干个同学来回答问题,每次被提问的同学会拿到一张卡片,卡片上有N个数,他们的任务是求出N个数中质因数最大的数字。对于答对的同学,老师会派发一份精美的礼品。

输入描述 Input Description

第一行,一个整数N,表示数字个数。
接下来N行,每行一个整数Ai,表示给出的数字。
N <= 5000 , Ai <= 20000

输出描述 Output Description

一个整数,表示质因数最大的数字。

样例输入 Sample Input


 

4
36
38
40
42

样例输出 Sample Output


 

38

数据来源 Source

包河区2015年信息学竞赛第二题

许金夫在2019-09-19 23:04:26追加了内容

快点呀

许金夫在2020-03-10 20:55:46追加了内容

来结个贴


1
已采纳
张帆
张帆
中级天翼
中级天翼

你先定义一个求是不是质数的函数

然后在main函数里循环n次

输入一个数

假设输入变量名为tmp

然后循环sqrt(tmp)次

如果tmp%j==0&&tmp/j是质数

则tmp/j就是tmp的最大质因数

然后就可以求最大

最后输出并提交

 

望采纳!!!

0
0
张岳恒
张岳恒
资深光能
资深光能

著名的埃埃氏筛法:

程序思路

要通过埃氏筛法找到小于或等于给定整数n的所有素数大致需要以下几步:

1、创建从2到n的连续整数列表:(2,3,4,...,n);

2、将p设定为最小的素数2;

3、在整数n的范围内,从2p开始列举p的倍数,并将其一一标记(即2p、3p……,值得注意的是p本身不应被标记);

4、在列表中寻找未被标记的最小的大于p的整数,令其为新的p并重复第3步,若列表中没有符合条件的数字则算法停止;

5、算法停止时,列表内未被标记的数字即为n以内的素数。

该算法的主要思想是每一次选取的p都是素数,因为如果它是可分解的则将会被标记为其它一些较小素数的倍数。但是,在以上算法实现过程中我们可以发现某些数字会被标记多次(例如,15将被3和5标记)。针对该问题,主要有两种改进办法:

1、在第3步中,我们完全可以从p的平方开始标记,而不用从2p开始,因为某一些点已经在较小的素数时被标记过了(例如,2p已经被2标记过了)。这样的改进也就是说在第4步中如果判定p的平方大于n时就可以选取下一个p了。

2、另一种方法是在第一种改进方法的基础上,我们在构造整数列表是就只选取n以内的奇数(除1以外)。

在本算法中,作者采用的就是第二种改进方法下的埃氏筛法。

ps:我可不太懂,搜了一下出来的,你应该是懂得

张岳恒在2020-03-11 13:41:16追加了内容

哎呀呀,好像不太对,楼上好像说的很好,大家可别举报我

我要回答