洛谷P5736 【深基7.例2】质数筛

请同学们在看完重点知识之后先自己思考再看代码,建议先自己尝试,不行再看参考代码

重点知识
1.函数的基本结构:
函数类型 函数名(参数列表){
函数主体,函数在return语句终止,void类型的函数可以不return,也可以写"return ;"这么一句话
}

2.函数的调用:
函数名(参数)进行使用,参数和参数列表对应
编程小技巧
代码编写小技巧:
可以使用一个空数组和一个累加的变量来存储新产生的数据。
例如:
声明: int new_num[10000], num_cnt;
存贮新产生的数: new_num[++num_cnt] = 新产生的数;
遍历所有新产生的数:
 for(int i = 1; i <= num_cnt; ++i){
    printf("%d\n",new_num[i]);
 }
第一题参考代码

#include<bits/stdc++.h>
using namespace std;
//在这里定义一个能判断一个数是不是质数的函数judge(x)
//能被2到sqrt(x)就返回一个1(true),否则就返回0(false)
bool judge(long long num){
    for(long long i = 2; i * i <= num; ++i){
        if(num % i == 0) return false;
    }
    return true;
}
int num1[100 + 7], num2[100 + 7], cnt = 0;
int main()
{
    int n; scanf("%d",&n);
    for(int i = 1; i <= n; ++i){
        cin>>num1[i];
        //在这里调用函数,如果不能被2到根号num1[i]且不等于1,则他是质数
        if(judge(num1[i]) && num1[i] != 1){
            //使用上面提到的小技巧将这些数存储下来
            num2[++cnt] = num1[i];
        }
    }
    //使用上面说的技巧将新的数据遍历
    for(int i = 1; i <= cnt; ++i){
        //在这里调整输出,输出非第一个数的前面的空格
        if(i != 1) cout<<" ";
        cout<<num2[i];
    }cout<<endl;
    return 0;
}

本文作者:a_night

本文链接:https://www.cnblogs.com/a-night/p/16216636.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   a_night  阅读(77)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起