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

0
1
已解决
宫西诚
宫西诚
修练者
修练者

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

输入描述 Input Description

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

输出描述 Output Description

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


0
已采纳
叶子煊
叶子煊
中级光能
中级光能

这题思路我先告诉你

首先找出n个数中的最大数

再for循环(从大往小循环)

{

依次进行指数判断

(判断不会可以再问我)

if判断(如果找到了)

直接break;

}

望采纳

~~~~~~~~~~~~~~~~~~~~~~~~

叶子煊在2018-08-15 17:06:15追加了内容

大体是这样

请自行修改(刚刚现场写的,可能有误)

    for(i=max1-1;i>=1;i--)
    {
        for(j=i-1;j>=1;j++)
        {
			if(i%j!=0)
    		{
       			s++;
    		}
		}
		if(s==j-1)
    	{
			s=0;
			for(int k=1;k<=n;k++)
			{
				if(a[k]%i==0)
				{
					s++;
				}
			}
			if(s==n)
			{
				cout<<i;
				break;
			}
		}
    }

自己定义,哈

叶子煊在2018-08-15 17:06:38追加了内容

@宫西诚 

叶子煊在2018-08-15 17:11:20追加了内容

忽略刚刚代码

我看错题了

0
宫西诚
宫西诚
修练者
修练者

循环和判断给一下,谢谢,将会采纳

0
叶子煊
叶子煊
中级光能
中级光能

可以和你说,这一题我测试点过了

但超时了

你可以自己再反复斟酌

我的是超时代码

如下:

#include<bits/stdc++.h>
using namespace std;
long long n,j,i,a[100001],b[100001],max1,s=0;
int main()
{
    cin>>n;
    for(int k=1;k<=n;k++)
    {
        cin>>a[k];
        for(i=a[k];i>=1;i--)
        {
            s=0;
            for(j=i-1;j>=2;j--)
            {
                if(i%j!=0)
                {
                    s++;
                }
                else break;
            }
            if(s==i-2)
            {
                if(a[k]%i==0)
                {
                    b[k]=i;
                    break;
                }
            }
            else b[k]=0;
        }
    }
    max1=b[1];
    s=1;
    for(i=2;i<=n;i++)
    {
        if(b[i]>max1)
        {
            s=i;
            max1=b[i];
        }
    }
    cout<<a[s];
    return 0;
} 

~~~~~~~~~~~~~~~~~~~~~~

0
0
张婧晗
张婧晗
初级守护
初级守护

用埃氏筛,会比较快,我试过了不会超时

核心代码

for(int i=1;i<=n;i++){
        cin>>a[i];
        t=a[i];
        for(j=2;j<=t;j++){
            if(t%j==0)    num=j;
            while(t%j==0)    t/=j;
        }
        if(num>maxx){
            maxx=num;
            maxxx=a[i];
        }
    }

0
0
我要回答