洛谷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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步