《ACM算法与数据结构设计》课程大作业报告
题目:五位以内的对称素数
学生姓名
班级学号
学生学院计算机软件学院
学生专业计算机科学与技术
联系电话
电子邮
指导教师
指导单位计算机学院软件工程系
日期2011.5.24
注意事项
(1)课程大作业从《ACM算法与数据结构设计》课程实验二(2011年4月19日)或实验三(2011年5月10日)中任选一个课题完成。
(2)课程大作业内容包括课题名称、课题内容和要求、课题分析、概要设计、详细设计、测试数据及其结果分析、调试过程中的问题、参考资料列表、课程小结等。
(3)课程报告可以打印,也可以手写,但前面两页内容、大作业撰写纲要、课程小结不可遗漏和更换。
(4)课程小结给出ACM程序设计过程的收获、遇到的问题,遇到问题解决问题过程的思考、程序调试能力的思考等,需要手写签字。
(5)课程大作业提交时间为2011年5月24日(第14周星期二)晚19:00~20:00,地点:计算中心A机房。
一、课题名称:
五位以内的对称素数
二、课题内容和要求:
题目:判断一个数是否为对称且不大于五位数的素数。
要求:判断输入的一组数据(正整数)是否是五位以内的对称素数,逐个判断并输出“yes”或“no”
三、课题分析:
定义两个函数分别判断数据是否为素数(bool isprime(int n)),是否是对称数(bool issym(int n));在main()函数中利用if()语句来判断该数据是否是五位以内的数。
只有同时满足三个条件,才能判断一个数据是五位以内的对称素数,输出“yes”;否则输出“no”。
输入输出方案:
输入:
输入数据含有不多于50个的正整数(0<n<2^32)。
输出:
对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。
每个判断结果单独列一行。
四、概要设计:流程图:
五、详细设计:
源代码如下:
#include <iostream>
using namespace std;
bool isprime(int n) //判断某数据是否是素数{
if (1==n)return 0;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
bool issym(int n) //判断某数据是否是对称数{
if(n<10)return 1;
if(n>=10 && n<100)
if(n/10==n%10)return 1;
if(n>=100 && n<1000)
if(n%10==n/100)return 1;
if(n>=10000 && n<100000)
if(n/1000==(n%10)*10+(n%100)/10)return 1;
return 0;
}
int main()
{
int n; while(cin>>n) {
if(n<100000 && isprime(n) && issym(n)) //三个条件判断某
数据是五位以内的对称素数
cout<<"Y es"<<endl;
else
cout<<"No"<<endl;
} return 0; }
六、测试数据及其结果分析:
七、调试过程中的问题
判断一个数据是否为对称数是采用数据分段的方式进行判断;
八、参考资料: C++教科书
输出样例: yes yes no
输入样例: 11 101 272
南京邮电大学《ACM算法与数据结构设计》
课程小结
学生姓名
班级学号
学生学院计算机软件学院
学生专业计算机科学与技术
电子邮件
指导教师
学期2010-2011-2。