问题标题: 酷町堂:1106 素数 为虾米错了

1
1
已解决
黄硕
黄硕
高级守护
高级守护
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int n,m,f=0,t=0;
    cin>>n>>m;
    for(int i=n;i<=m;i++)
    {
        for(int j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {
                f=1;
                break;
            }
        }
        if(f==0)
        {
            t++; 
        }
        f=0;
    }
    cout<<t;
    return 0;
}

 


0
已采纳
毛润宇
毛润宇
新手天翼
新手天翼

会了会了;

你的代码大致没问题;

但是,没有考虑到,万一i=1怎么办?

for(int i=n;i<=m;i++)
    {
        for(int j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {
                f=1;
                break;
            }
        }
        if(f==0)
        {
            t++; 
        }
        f=0;
    }
    cout<<t;

在以上代码的前面,先加一个if(n>=2)

一个{

在cout<<t;的后面加一个}。

往下写:else后面写{再复制:

for(int i=n;i<=m;i++)
    {
        for(int j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {
                f=1;
                break;
            }
        }
        if(f==0)
        {
            t++; 
        }
        f=0;
    }
    cout<<t;

将for(int i=n;i<=m;i++)中的n改成2

在cout<<t;后面加}

代码就可以了

0
侯平仄
侯平仄
新手天翼
新手天翼

加特判:是不是1

1既不是素数,也不是合数

0
褚俊皓
褚俊皓
新手天翼
新手天翼

会了会了;

你的代码大致没问题;

但是,没有考虑到,万一i=1怎么办?

 

 

for(int i=n;i<=m;i++)

 

{

 

for(int j=2;j<=sqrt(i);j++)

 

{

 

if(i%j==0)

 

{

 

f=1;

 

break;

 

}

 

}

 

if(f==0)

 

{

 

t++;

 

}

 

f=0;

 

}

 

cout<<t;

在以上代码的前面,先加一个if(n>=2)

一个{

在cout<<t;的后面加一个}。

往下写:else后面写{再复制:

 

 

for(int i=n;i<=m;i++)

 

{

 

for(int j=2;j<=sqrt(i);j++)

 

{

 

if(i%j==0)

 

{

 

f=1;

 

break;

 

}

 

}

 

if(f==0)

 

{

 

t++;

 

}

 

f=0;

 

}

 

cout<<t;

将for(int i=n;i<=m;i++)中的n改成2

在cout<<t;后面加}

代码就可以了

0
叶奥瑞
叶奥瑞
修练者
修练者

万一 i 等于 1 或 2 怎么办

所以要加一个判定:

if(i==2)

    t++;

0
毛润宇
毛润宇
新手天翼
新手天翼

我也没做出来,再想想吧

 

0
0
我要回答