当前位置:网站首页>PAT_乙级_真题练习_1007_素数对猜想
PAT_乙级_真题练习_1007_素数对猜想
2022-07-31 05:09:00 【xjhdsg】
我的第一篇博客。
这道题刚看完题目时,我第一个想到的是用数组记录所有的素数,再用循环依次比较,但感觉既浪费空间,又浪费时间。
后来又想到斐波那契数列,决定用两个变量,通过在循环过程中,不断地交替值,实时记录结果。
在实现过程中,刚开始,过多的使用if语句,使得逻辑较为混乱,第一次提交检测,竟然直接编译错误,后来理了一下,发现有很多冗余代码,比如,一开始,我给de2赋值,后面还要比较de1和de2的大小,换成de1后,便不需要比较。
在实现的后期,最后一个调试点显示运行超时,换成用sqrt实现判断素数就行了。
#include<stdio.h>
#include<math.h> //调用sqrt函数。
int main(void)
{
int N, count, de1, de2, flag, i, j; //count用来记录结果。
//de1、de2分别用来记录两个相临的较小,较大的素数。
count = de2 = flag = 0;
scanf("%d",&N);
de1 = 3;
for(i = 5; i <= N; i++) //当N < 5时,结果为0。
{
flag = 0;
for(j = 2; j <= sqrt(i); j++) //用sqrt函数来判断素数,可以大幅缩短编译时间。
{
if(i % j == 0)
{
flag++;
}
}
if(flag == 0)
{
de2 = i;
if(de2 - de1 == 2)
{
count++;
}
de1 = de2; //保证交替的完成
de2 = 0;
}
}
printf("%d",count);
return 0;
}
边栏推荐
- 数据库上机实验2 单表查询和嵌套查询
- Quickly master concurrent programming --- the basics
- 2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
- MySQL8.0.26安装配置教程(windows 64位)
- 12 reasons for MySQL slow query
- 剑指offer专项突击版 ---第 5 天
- MySQL-如何分库分表?一看就懂
- 数据库上机实验3 连接查询和分组查询
- 剑指offer专项突击版 --- 第 4 天
- TOGAF之架构标准规范(一)
猜你喜欢
剑指offer基础版 --- 第22天
Centos7 install mysql5.7
MySQL (updating)
基于web3.0使用钱包Metamask的三方登陆
2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
MySQL_关于JSON数据的查询
面试Redis 高可靠性|主从模式、哨兵模式、Cluster集群模式
Tapdata 与 Apache Doris 完成兼容性互认证,共建新一代数据架构
STM32 - DMA
Object Detection Study Notes
随机推荐
Workflow番外篇
账号或密码多次输入错误,进行账号封禁
MySQL-如何分库分表?一看就懂
基于flask的三方登陆的流程
ABC D - Distinct Trio (Number of k-tuples
mysql 的简单运用命令
Sword Point Offer Special Assault Edition ---- Day 2
The interviewer asked me TCP three handshake and four wave, I really
【MQ我可以讲一个小时】
MySQL(更新中)
TOGAF之架构标准规范(一)
pycharm专业版使用
MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细
C语言实验四 循环结构程序设计(一)
Temporal介绍
三次握手与四次挥手
Temporal线上部署
详解扫雷游戏(C语言)
Paginate the list collection and display the data on the page
剑指offer基础版 ---- 第29天