编程输入两个正整数a和b(2<=a<b<=999999),输出二者之间的素数的个数。
输入格式:2 20
输出格式:8
代码如下:
#include #include int main(){int a, b, n, i, k = 0, f;scanf("%d %d", &a, &b);for (n = a; n <= b; n++) {f = 1;for (i = 2; i <= sqrt(n); i++)if (n % i == 0) {f = 0;break;}if (f == 1)k++;if (n == b)printf("%d", k);}}
求素数的方法就是先赋一个变量f来在循环之后判断是否为素数,具体就是先赋值f=1,然后利用循环来看n在2到根号2之间存在约数,如果存在就代表不为素数,并赋值f=0,然后跳出循环,在外层循环中,f需为1才可以给计数器k++,因为存在n存在约数,所以该n不可以给计数器自增,然后就接着在外层循环判断下个数是否为素数,以此类推。
在其中,我们使用变量k进行计数,是一个非常好用的方法和技巧,请注意要在外层循环之前进行清0操作,然后在内层循环内,如果找到素数首先立即执行++k,实现计数,并保证找到第一个素数时,k的值为1。