编写一个函数int prime (int n),判断n是否为素数;再编写程序输入一个整数m,调用prime.求小于m的最大素数

怎么写呀 我把代码给运行出来了但是还是错的
是0分为啥呀 能不能帮助求解一下

img

img

判断素数错了,i不会大于n,所以 else if(i>n) 是错误的。可以改为

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

main函数里for循环里也有问题,需要改一下。改为

for(x=m-1;x>1;x--)
{
   if(isprime(x))
       break;
}

在main函数加一个判断,当prime判断是素数则推寻循环打印这个数,否则继续循环;然后再把判断素数修改下即可,修改如下:

参考链接:
100以内所有的素数有那些_作业帮

#include <stdio.h>

int prime(int n){
    
    int i;
    for(i=2;i<n;i++){
        if(n%i==0){
            return 0;
        }
    }
    
    return 1;
} 

int main(void){
    
    int m,x;
    scanf("%d",&m);
    int find=0;
    for(x=m-1;x>1;x--){
        if(prime(x)==0){
            continue;
        }else{
            find=1;
            break;
        }
    }
    
    if(find==1){
        printf("%d",x);
    }else{
        printf("没有找到小于%d的最大素数。\n",m);
    }
    
    return 0; 
} 

img