题目描述
给你两个数a、b,现在的问题是要判断这两个数组成的区间内共有多少个素数
输入
多组测试数据。 每个测试数据输入两个数a、b。(2<=a,b<=1000)
输出
输出该区间内素数的个数。
#include<stdio.h>
void main(){
int a,b,t,i,j,sum;
while(~scanf("%d%d",&a,&b)){
if(a>b){
t=a;a=b;b=t;
}
sum=0;
for(i=a;i<=b;i++){
j=2;
while(j<=i){
if(i%j==0) break;
else j++;
}
if(j==i) sum++;
}
printf("%d\n",sum);
}
}
需要注意的一点:
for(i=a;i<=b;i++){
j=2;
…
}
j=2要在每次for循环中重新定义,每次循环 j的初始值都是2.
我忽略了这点,把j=2放到了for循环中i=a的后面,导致输出值并非预想值。
再补充一个例题
函数调用方法判断某数是否为素数:
#include<stdio.h>
int sushu(int x);//声明
int main(){
int a;
printf("输入一个数叭:\n");
scanf("%d",&a);
if(sushu(a)) printf("yes\n");
else printf("no\n");
}
int sushu(int x){ //函数定义
int i=2;
while(i<=x){
if(x%i==0) break;
else i++;
}
if(x==i) return 1;
else return 0;
}