把你的代码改了改
#include<iostream>
using namespace std;
int main()
{
int a, b, c = 0, i = 2;
cin >> a >> b;
a = a == 1 ? 2 : a;//如果a=1不计算1(1不是素数)
for (;a<b;a++)
{
i = 2;
int p = 1;
while (i < a&&p == 1)
{
if (a%i == 0)
{
p = 0;
}
i++;
}
if (p == 1)
c++;
}
cout << c;
}
素数不是这么求的,看一下我下面这个求素数的函数
#include<stdio.h>
#include<math.h>
//是素数返回1,不是则返回0
int is_prime(int n){
int i;
for(i = 2;i <= sqrt(n);i++){
if(n % i == 0)
return 0;
}
return 1;
}
int main(){
//求出100-200之内的所有素数
int i;
for(i = 100;i < 200;i++){
if(is_prime(i) == 1)
printf("%d\n",i);
}
return 0;
}
1.素数一般指质数。 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
2.问题在if(a%i!=0) c++;在判断a是否为素数,a除不尽i就对c自增了。实际应该是a除不尽2到a的所有数,都除不尽时再自增。
3.第二个问题i在第二次及以后没有恢复初值2。