求最大质数,请各位看看有什么地方需要改正

 

你是程序结果不对还是什么问题,你是求n个数的最大质数吗,暂时没发现代码有什么问题

# include <stdio.h>
int isprime(int m){
    int i;
    if(m==2)
        return 1;
    else{
        for(i=2;i<m;i++){
            if(m%i==0)
                return 0;
        }
    }
}
main()
{
    int i,n,max=0;

    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
        if(isprime(a[i])){
            if(a[i]>max)
                max=a[i];
        }
    }
    printf("%d",max);
}

求质数函数效率不高,如下修改可以更省时间

int isprime(int m)
{
    if(m==2)
        return 1;
    for(int i=2;i*i<=m;i++)
    {
        if(m%i==0)
            return 0;
    }
    return 1;
}