首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
35-语言入门-35-素数
时间:
2016-01-19 14:29:49
阅读:
243
评论:
0
收藏:
0
[点我收藏+]
标签:
题目地址:?
http://acm.nyist.net/JudgeOnline/problem.php?pid=169
?
?
描述
走进世博园某信息通信馆,参观者将获得前所未有的尖端互动体验,一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现,从观众踏入展馆的第一步起,就将与手持终端密不可分,人类未来梦想的惊喜从参观者的掌上展开。
在等候区的梦想花园中,参观者便开始了他们奇妙的体验之旅,等待中的游客可利用手机等终端参与互动小游戏,与梦想剧场内的虚拟人物
Kr. Kong
进行猜数比赛。当屏幕出现一个整数
X
时,若你能比
Kr. Kong
更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。
例如:当屏幕出现
22
时,你的回答应是
23
;当屏幕出现
8
时,你的回答应是
7
;若
X
本身是素数,则回答
X;
若最接近
X
的素数有两个时,则回答大于它的素数。
?
输入
第一行:
N
要竞猜的整数个数
接下来有
N
行,每行有一个正整数
X
1<=N<=5 1<=X<=1000
输出
输出有
N
行,每行是对应
X
的最接近它的素数
样例输入
4
22
5
18
8
样例输出
23
5
19
7
?
?
代码:
?
#include
<stdio.h>
#include
<math.h>
#define true
1
#define false
0
//
判断是否是素数
static
int
isPrimeNumber(
int
number);
//
处理数据
static
void
handlerData(
int
inputNumber);
int
main()
{
???
int
readLen =
0
;
???
scanf
(
"%d"
,&readLen);
???
getchar
();
???
???
while
(readLen>
0
)
??? {
???????
int
inputNumber =
0
;
???????
scanf
(
"%d"
,&inputNumber);
???????
getchar
();
???????
???????
handlerData
(inputNumber);
???????
??????? --readLen;
??? }
???
???
return
0
;
}
//
处理数据
static
void
handlerData(
int
inputNumber)
{
???
if
(
isPrimeNumber
(inputNumber))
??? {
???????
printf
(
"%d\n"
,inputNumber);
???????
return
;
??? }
???
???
int
step =
1
;
???
???
//
判断左侧的值和右侧的值
???
while
(
true
)
??? {
???????
int
leftValue = inputNumber-step;
???????
int
rightValue = inputNumber+step;
???????
???????
int
isLeft =
false
;
???????
int
isRight =
false
;
???????
???????
if
(leftValue <=
1
)
??????? {
??????????? isLeft =
false
;
??????? }
???????
else
??????? {
??????????? isLeft =
isPrimeNumber
(leftValue);
??????? }
???????
??????? isRight =
isPrimeNumber
(rightValue);
???????
???????
if
(isLeft==
true
|| isRight ==
true
)
??????? {
???????????
if
(isLeft==
true
&& isRight ==
false
)
??????????? {
???????????????
printf
(
"%d\n"
,leftValue);
??????????? }
???????????
else
if
(isLeft==
false
&& isRight ==
true
)
??????????? {
???????????????
printf
(
"%d\n"
,rightValue);
??????????? }
???????????
else
if
(isLeft==
true
&& isRight ==
true
)
??????????? {
???????????????
printf
(
"%d\n"
,rightValue);
??????????? }
???????????
???????????
break
;
??????? }
???????
??????? ++step;
??? }
}
//
判断是否是素数
static
int
isPrimeNumber(
int
number)
{
???
if
(number <
2
)
???????
return
false
;
???
???
int
i=
2
;
???
int
k = sqrt(number);
???
for
(;i<=k;++i)
??? {
???????
if
(number%i ==
0
)
???????????
break
;
??? }
???
???
if
(i > k)
???????
return
true
;
???
else
???????
return
false
;
}
?
?
总结:
1.将判断素数的过程剥离出来。
2.以当前值为中心,左右依次扩展进行判断处理
当然思考的过程是2->1,如此将大问题,逐步变成小问题。
如果要节省时间,那就将素数放在容器(数组形式容器)。
?
35-语言入门-35-素数
标签:
原文地址:http://www.cnblogs.com/sharpfeng/p/5141915.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!