题目描述
牙哥有奖品啊,牙哥有奖品,那么奖品是什么呢?据小道消息,牙哥最近买了很多棒棒糖,但是牙哥又不想把棒棒糖拿出来让小伙伴们吃,他出了一道难题,并且许诺只要解出此题,就可以找牙哥领棒棒糖一个。、那么,等什么呢,领棒棒糖吧!如果牙哥不给糖的话,相信你们知道怎么做的~~~输入
多组测试数据,输入两个正整数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);
}
}
}
}