1
已解决
李素妍
新手天翼
新手天翼
#include <iostream>
#include <cmath>
using namespace std;
int a[20010],maxn,maxn1,pos;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
for(int j=2;j<=sqrt(i);j++){
if(n%a[i]==0 && maxn<=n%a[i]){
maxn=n%a[i];
}
}
if(maxn1<maxn){
maxn=maxn;
pos=a[i];
}
}
cout<<pos;
return 0;
}
快
李素妍在2020-05-19 20:48:52追加了内容
加10豆
注意是改错
李素妍在2020-05-19 20:51:30追加了内容
https://newcourse.codingtang.com/#/problem/problemSub?id=1062
0
1
董宇昊
初级启示者
初级启示者
注意了!
首先,我们要有判断质数的函数!
这里我定义的是zs(int n)
接着,我们写入里面的代码
//因为1不是质数,也不是合数,所以我们从2开始找到n的平方根
for(int i=2;i<=sqrt(n);i++)
然后,判断他是不是i的倍数
- if(n%i==0){
- return false;
- }
接着,求最大质因数函数zys(int n)
外圈是for循环
for(int i=2;i<n;i++)
里面是while循环
- while(n%i==0 && zs(i)){ //i是质因数
- n/=i;
- if(zs(n)) return n;
- }
代码都出来了!
终于到主函数了
cin输入n
然后for循环
for(int i=1;i<=n;i++)
接着cin输入a
最后是核心代码
- int p=zys(a[i]); //求a[i]的最大质因数p
- if(p>maxx){
- maxx=p;
- ans=a[i];
- }
循环外面输出ans就可以了!
祝你AC
董宇昊在2020-05-19 21:07:28追加了内容
合起来
bool zs(int n){ //判断质数的函数
for循环(int i=2;i<=sqrt(n);i++){//从2开始到n的平方根
if(n%i==0){//判断n是不是i的倍数
return false;//如果是,返回错误
}
}
return true;//如果没有倍数,是质数,返回对的
}
就这些了
不然我又要禁言了
0
0
李瑞曦
高级天翼
高级天翼
函数:
- bool zs(int x){
- for(int i=2;i<x;i++){
- if(x%i==0)
- return false;
- }
- return true;
- }
0