試題 算法訓練 最大質因數
資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
給出N個數字,求出有最大的最大質因數的那個數
輸入格式
第一行:一個整數N。
接下來的N行,每行一個整數A_i,表示給出的那N個數字。
輸出格式
第一行:一個整數,擁有最大的最大質因數的那個數。
樣例輸入
4
36
38
40
42
樣例輸出
38
數據規模與約定
60%的數據滿足:N<=100
100%的數據滿足:N<=2500,A_i<=20000
代碼
#include<stdio.h>
int pnum(int n){//判斷質數函數
int i;
for(i=2;i*i<=n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main(){
int n,i,j,k,f;
scanf("%d",&n);
int a[n],max=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
for(j=a[i];j>1;j--){
if(a[i]%j==0&&(max<j)&&pnum(j)==1){//當j是a[i]的因數且j>max且j爲質數時
f=i;//標記a[i]的位置
max=j;//重新賦值max
break;
}
}
}
printf("%d",a[f]);//輸出最大的最大質因數
return 0;
}