首先写一个素数判断的函数prime,然后判断是否是素数,如果是,返回1,否则返回0.然后应用prime计算101~999(包括101和999两个数)素数的个数

可以看下错误吗?谢谢


 
#include<stdio.h>
#include<math.h>
int prime(int m)
{
    int i;
    for(i=2;i<=sqrt(m);i++)
       if(m%i!=0&&i==sqrt(m)-1)
    return 1;
    else return 0;
 } 
int main()
{
    int num,n,count=0;
    scanf("%d",&num);
    if(prime(num)==1)
         printf("是素数\n");
    else printf("不是素数\n");
    for(n=101;n<=999;n++)
        if(prime(n)==1)
           count++;
    printf("有%d个素数\n",count);
    return 0;
}

if(m%i==0){return 0}
return 1放到for循环外面

意思是有任意一个被整除就不是素数
循环完了都没有被整除就是素数了

第9行错了

函数修改如下,供参考:

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