统计a~b之间素数的个数,没有输出error

37 阅读1分钟

题目描述
牙哥有奖品啊,牙哥有奖品,那么奖品是什么呢?据小道消息,牙哥最近买了很多棒棒糖,但是牙哥又不想把棒棒糖拿出来让小伙伴们吃,他出了一道难题,并且许诺只要解出此题,就可以找牙哥领棒棒糖一个。、那么,等什么呢,领棒棒糖吧!如果牙哥不给糖的话,相信你们知道怎么做的~~~输入
多组测试数据,输入两个正整数n和m(n!=m,1<=n,m<=10000)。输入以0 0结束。输出
n到m之间有素数,输出素数的个数,没有素数,输出error。样例输入9 102 100 0样例输出error4提示
1是素数么,怎么处理

#include <stdio.h>
#include <stdlib.h>
int prime(int n)
{
    int d,e;
    if(n==1)//1不是素数
        return 0;
    e=(int)sqrt(n);
    for(d=2; d<=e; d++)//检索n是否为素数
    {
        if(n%d==0)//n不是素数返回0
            return 0;
    }
    return 1;//是素数返回1
}

int main()
{
    int a,b,c,x;//a,b为区间范围
    while(1)//多实例测试
    {int g=0,k=0;
        scanf("%d %d",&a,&b);
        if(a==0&&b==0)
            break;//该语句跳出多实例测试

        else
        {
            if(a<=b)//分情况讨论输入范围
            {
                for(x=a; x<=b; x++)//遍历区间范围所有的数
                {
                    c=prime(x);//引用素数函数,是素数返回1,不是返回0
                    if(c==1)
                    {
                        k++;
                        g=1;
                        continue;
                    }
                    if(c==1)
                        k++;
                }
                if(g==0)
                    printf("error\n");
                else
                    printf("%d\n",k);
            }
            else
            {
                for(x=b; x<=a; x++)
                {
                    c=prime(x);
                    if(c==1&&g==0)
                    {
                        k++;
                        g=1;
                        continue;
                    }
                    if(c==1)
                        k++;
                }
                if(g==0)
                    printf("error\n");
                else
                    printf("%d\n",k);

            }

        }

    }

}