总是显示运行超时,应该如何去改进

img


#include
#include
using namespace std;
int func(int m,int n)
{
    int a=0;
    int flag;
    for(int i=m;i<=n;i++)
    {
        flag=1;
        if(i==1) continue;
        if(i==2) {a++;continue;}
        for(int j=2;j<=sqrt(i);j++)
        {
            if(i%j==0) flag=0;
        }
        if(flag==1) a++;
    }
    return(a);
}
int main()
{
    int m,n;
    while(cin>>m>>n)
    {cout<<func(m,n)<return 0;
}

img

while(cin>>m>>n)要判断返回值是不是EOF啊,EOF不是0所以它是true,会继续循环,但是后续已经没有输入了,你这一直阻塞能不超时吗

int j,k = sqrt(i);
for(j=2;j<=k;j++)
       if(i%j==0) 
           break;
if(j>k) 
    a++;