不懂就问!超时了,怎么优化呢???
查看原帖
不懂就问!超时了,怎么优化呢???
496699
ysy2021楼主2021/4/22 13:46

话不多说, 上代码!

# include <stdio.h>
# include <stdlib.h> 

int max(int * , int );
int isprime(int );

int n, i, j;

int main()
{
    scanf("%d", &n);  
    int * p = (int *)malloc(n*sizeof(int));
    
    
    for (i=2; i<n; i++) {
    	if (n%i == 0 && isprime(i)) {//将及 可以把n整除的 , 又是素数的i存入到p[]里面 
    	   p[j] = i;
    	   ++j;	
		}
    	   	
	} 
	printf("%d\n", max(p, j));//输出最大的p[]! 
	
	return 0; 

}
int max (int * a, int len)
{
	int i, j, t;
	for (i=0; i<len; ++i) {
		for (j=i; j<len; ++j) {
			
			 if (a[i]<a[j]) {
			    break; 
			}						
		}
		if (i == len-1)
		   return a[i];
	}
}
void sort (int * a, int len)
{
	int i, j, t;
	for (i=0; i<len; ++i) {
		for (j=i; j<len; ++j) {
			if (a[i]<a[j]) {
			    t = a[i];
				a[i] = a[j];
				a[j] = t;	
			}
		}
	}
}
int isprime(int n)
{
	int i;
	for (i=2; i<n; ++i) {
		if(n%i == 0)
		   break;
	}
	if (2 == n || i == n)
	   return 1;
	else 
	   return 0;
}

2021/4/22 13:46
加载中...