C語言實現 藍橋杯 算法訓練 最大質因數

試題 算法訓練 最大質因數

                                                                                  藍橋杯試題解答彙總鏈接

資源限制

       時間限制: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章