定义一个标识字段,通过标识字段来判断。
int flag=0;//标识字段
当i%j==0时,flag=1
在内循环后,对flag进行判断。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,j,m,n,num=0,flag=0;
cin>>m>>n;
for(i=m;i<=n;i++){
flag=0;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0)
num++;
}
cout<<num<<endl;
return 0;
}
你的判断有问题,如果m大于2,你一开始就加一了,循环过程又加一
其次判断的时候最好拿一个变量来每次记录,这样不容易出错
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,j,m,n,cnt=0,f=0;
cin>>m>>n;
for(i=m;i<=n;i++){
f=0;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
f=1;break;
}
}
if(f==0)
cnt++;
}
cout<<cnt;
return 0;
}