问题标题: 酷町堂:1699

0
0
已解决
余彦文
余彦文
初级光能
初级光能

大家好,又是我

请问1699这一题怎么写?

20分代码

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int x[1010],j; 
bool zs(int z){
    for(int i=2;i<=sqrt(z);i++){
        if(z%i==0){
            return false;
        }
    }
    return true;
}
int main(){
    int a,b,c=0;
    cin>>a>>b;
    for(int i=a;i<b;i++){
        x[j]=i;
        j++;
        if(zs(i)&&i!=1){
            c=1;
        }
    }
    if(c==0){
        cout<<"NO";
        return 0;
    }
    j-=1;
    for(int i=0;i<j;i++){
        if(zs(x[i])&&i!=1){
            cout<<x[i]<<endl;
        }
    }
    return 0;
}

我知道有点怪

思路如下

定义一个判断质数的函数

bool zs(int z){
    for(int i=2;i<=sqrt(z);i++){
        if(z%i==0){
            return false;
        }
    }
    return true;
}

然后输入a,b

cin>>a>>b;

将a~b中所有数带入x数组,并判断有没有质数

    for(int i=a;i<b;i++){
        x[j]=i;
        j++;
        if(zs(i)&&i!=1){
            c=1;
        }
    }

没有质数,输出NO并结束

    if(c==0){
        cout<<"NO";
        return 0;
    }

将j-1

j-=1;

输出所有质数

for(int i=0;i<j;i++){
       if(zs(x[i])&&i!=1){
            cout<<x[i]<<endl;

        }

}


1
已采纳
缪鲲鹏
缪鲲鹏
新手光能
新手光能

你这个太复杂了 , 我的比较好理解 , 解释在代码里

头文件 <iostream>
头文件 <cmath>
using namespace std;
bool f(int n)//判断是否是质数函数 
{
    for(int i = 2;i <= sqrt(n);i ++)
        if(n%i == 0) return false;
    //
    return true;
}
int main()
{
    int a, b, ans = 0;
    cin >> a >> b;
    for(a;a <= b;a ++) {
        if(f(a) == true && ans < 3)
        //这里因为是从小到大判断的原因
        //所以根本不需要用数组存储
        //如果输出过三个了,则不再输出 
        {
            ans ++;
            cout << a << endl;
        }
    }
    if(ans == 0) cout << "NO";
    return 0;
}

 

1
0
我要回答