查找满足要求的素数c++课程设计
- 格式:doc
- 大小:75.00 KB
- 文档页数:7
C语言课程设计学院班级设计人 __ 成绩 ____一、题目:素数探求二、目的与要求1.目的:(1)培养学生综合利用C语言进行程序设计的能力;(2)熟悉函数设计、循环的控制方法及测试方法,理解模块化程序设计的优点和意义。
2.基本要求:(1)要求用C编程语言实现算法,完成程序的设计,在VC++6.0 开发环境运行算法;(2)用多个函数实现;(3)源代码程序要求必要的注释。
3.创新要求在基本要求达到后,可以进行创新设计,如优化人机界面、将输出结果存放在文件里等。
4.书写设计报告的要求课程设计报告1)课程设计题目、内容、要求。
2)总体设计(包含几大功能模块)。
3)详细设计(各功能模块的具体实现算法——流程图)4)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。
5)调试分析(包含各模块的测试用例,及测试结果。
)6)总结(课程设计完成了哪些功能,还有哪些地方需要改进,及通过课程设计有何收获,调试程序的体会等)三、设计方法和基本原理1.问题描述:从键盘任意输入一个整数m:(1)若m不是素数,则对m进行质因数分解,并将m以质因数从小到大的顺序排列的乘积形式输出;否则输出“m 是质数!”。
例如:用户输入90,则程序输出为2*3*3*5。
(2)若m是素数,则按降序输出小于m的所有素数。
2.问题的解决方案:根据问题的描述,可以按照要求的功能采用结构化的设计思想。
四、主要技术问题的描述根据以上的分析,主要解决的技术问题在于:素数的判断,单独用一个函数完成;两个问题分别用两个函数完成。
设计程序:#include "stdio.h"int isprime(int);void f1(int);void f2(int); /*函数说明语句*//*************************主函数***************************/main(){int m;printf("从键盘任意输入一个整数m:\n");scanf("%d",&m);if(isprime(m)){printf("%d是素数\n",m);f1(m);}else{printf("%d不是素数\n可以进行质因数分解如下:\n",m);f2(m);}}/******************定义函数判断是否为素数******************/int isprime(int a){int i;for(i=2;i<=a/2;i++)if(a%i==0) return 0; /*a若能被某个数整除,即不是素数,返回0*/ return 1; /*a不能被2到a/2的任意数整除,返回1*/}/****************定义函数输出小于m的所有素数***************/ void f1(int b){int i;printf("小于%d的素数有: \n",b);for(i=b-1;i>=2;i--){if(isprime(i))printf("%d ",i);}printf("\n");}/**************定义函数对m进行质因数分解*******************/ void f2(int n){int i;for(i=2;i<=n;i++)while(n!=i){if(n%i==0){printf("%d*",i);n=n/i;}elsebreak;}printf("%d",n);printf("\n");}。
判断素数的C语言程序.docx素数是指只能被1和本身整除的整数,例如2、3、5、7、11等都是素数。
在编程中,判断一个数是否为素数是一个常见的问题。
下面我们来介绍一下如何用C语言来编写一个判断素数的程序。
判断方法判断一个数n是否为素数,可以采用以下方法:1. 如果n小于2,则n不是素数,直接返回false。
4. 如果n大于2,且为奇数,则从3到sqrt(n)依次判断n是否能被整除,如果可以则n不是素数,直接返回false,如果循环结束后n还未被整除,则n是素数,返回true。
根据上面的方法,我们就可以开始编写判断素数的C语言程序了。
代码实现```c#include <stdio.h>#include <math.h>bool is_prime(int n){if(n < 2){ //1.如果n小于2,则n不是素数,直接返回false。
return false;}if(n == 2){ //2.如果n等于2,则n是素数,直接返回true。
return true;}if(n % 2 == 0){ //3.如果n大于2,且为偶数,则n不是素数,直接返回false。
return false;}int limit = sqrt(n); //计算sqrt(n)for(int i = 3; i <= limit; i += 2){ //从3开始循环到sqrt(n)if(n % i == 0){ //如果n能够被i整除,则n不是素数,直接返回false。
return false;}}return true; //循环结束后n还未被整除,则n是素数,返回true。
}代码解析代码中首先包含了两个头文件,分别是stdio.h和math.h。
其中stdio.h是C语言标准输入输出头文件,math.h是C语言标准数学头文件,用于包含sqrt函数,可以用来计算平方根,即sqrt(n)。
接下来是一个is_prime函数,该函数传入一个n参数,用于判断n是否为素数。
C程序设计-求100以内所有素数1、提示:素数又叫质数,指只能被1和自己本身整出的自然数(1和0即非质数又非合数)方法一:#include#includevoid main(){int number = 2;int i;for(number ; number<=100; number++){ //1号for循环for ( i=2; i<=sqrt(number); i++){ //2号for循环if (number%i == 0){break;}}if (i>sqrt(number)) { //如果2号for循环结束时,if语句从来没执行,那么i的值肯定大于sqrt(number),所以用这个表达式来判断是否为素数printf("%d\n",number);}}}方法二(笨,但却很容易理解的方法,设置标志变量flag)#include#includevoid main(){int number = 2;int i;char flag = 0;for(number ; number<=100; number++){flag = 1;for ( i=2; i<=sqrt(number); i++){if (number%i == 0){flag = 0; //用标志变量来判断for循环是否成功进入if语句break;}}if (flag == 1) {printf("%d\n",number);}}}2、这里用到了sqrt()函数,sqrt的全称是squre root 即平方根,使用时别忘了引入头文件#include<math.h>3、求100以内的素数,再判断某数n是否为素数时,不需要从2一直除到n,只需要从2除到sqrt(n)【注意sqrt(n)也要判断】即可。
c语言课程设计素数问题一、教学目标本课程旨在通过C语言编程,让学生掌握素数问题的算法设计与实现。
具体目标如下:1.理解素数的基本概念。
2.掌握素数生成算法。
3.理解素数在计算机科学中的应用。
4.能够使用C语言编写简单的素数生成程序。
5.能够对已有的素数生成算法进行分析和改进。
情感态度价值观目标:1.培养学生对数学和计算机科学的兴趣。
2.培养学生独立思考和解决问题的能力。
二、教学内容1.素数的概念和性质。
2.素数生成算法介绍。
3.C语言编程基础。
4.素数问题的C语言实现。
5.素数生成算法的改进和优化。
6.C语言基础知识(第一章)。
7.素数的概念和性质(第二章)。
8.素数生成算法介绍(第三章)。
9.素数问题的C语言实现(第四章)。
10.素数生成算法的改进和优化(第五章)。
三、教学方法针对不同的教学内容,采用多种教学方法,如讲授法、案例分析法、实验法等。
1.素数的概念和性质:采用讲授法,通过讲解和示例让学生理解素数的基本概念和性质。
2.素数生成算法介绍:采用案例分析法,通过分析已有的素数生成算法,让学生理解其原理和优缺点。
3.C语言编程基础:采用实验法,让学生动手编写C语言程序,掌握C语言的基本语法和编程技巧。
4.素数问题的C语言实现:采用项目驱动法,让学生独立完成素数生成程序的设计和实现。
5.素数生成算法的改进和优化:采用讨论法,让学生分组讨论和分析不同算法的优劣,并提出改进和优化的方案。
四、教学资源1.教材:《C语言程序设计》。
2.参考书:《C语言编程思想》。
3.多媒体资料:教学PPT、视频教程。
4.实验设备:计算机。
以上教学资源将贯穿整个教学过程,为学生提供丰富的学习材料和实践机会。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评估学生的学习成果。
具体评估方式如下:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
2.作业:布置适量的编程作业,评估学生的编程能力和对知识的掌握程度。
判断素数c语言程序编写-回复判断素数是一种经典的算法问题,在计算机科学中有着广泛的应用。
素数,也被称为质数,是指只能被1和自身整除的正整数。
为了判断一个数是否为素数,我们需要通过一定的算法来进行验证。
本文将介绍如何编写一个C语言程序来判断一个数是否为素数,并详细解释每个步骤的流程和原理。
首先,我们需要明确一些基本概念和知识。
在数学中,质数是指大于1的自然数中,除了1和它本身外没有其他因数的自然数。
根据这个定义,我们可以得出一个特性:质数p只能被2到√p之间的自然数整除。
这个特性可以作为判断素数的核心原理。
接下来,我们开始编写素数判断的C语言程序。
首先,我们需要定义一个函数,输入一个整数n,判断其是否为素数,并返回一个布尔值。
代码如下:c#include <stdio.h>#include <stdbool.h>bool isPrime(int n);在函数中,我们需要进行一系列的判断来验证n是否为素数。
首先,我们判断n是否小于2,若小于2,则不满足素数的定义,可以直接返回false。
代码如下:cbool isPrime(int n){if (n < 2)return false;}接下来,我们需要进行一个循环判断,从2到√n,判断n是否能被任意一个数整除。
若存在一个能整除n的数,则表明n不是素数。
如果循环结束后都没有找到能整除n的数,则可以确定n是素数。
代码如下:cbool isPrime(int n){if (n < 2)return false;for (int i = 2; i * i <= n; i++){if (n i == 0)return false;}return true;}在上面的代码中,我们使用了"i * i <= n"的判断条件,而不是"i <= √n"。
这是因为在计算机中,平方运算比开方运算更高效。
C语言是一种广泛应用于系统编程和应用程序开发的高级程序设计语言。
在C语言中,有许多常用的函数和技巧,其中包括判断素数的函数程序。
在本文中,我们将介绍如何在C语言中编写一个判断素数的函数,并且调用这个函数进行素数的判断。
一、判断素数的函数程序在C语言中,我们可以通过编写一个函数来判断一个数是否为素数。
素数是指只能被1和自身整除的数,因此我们可以通过对一个数进行从2到该数-1的遍历,来查看该数是否能够被其他数整除。
如果能被整除,则该数不是素数;如果不能被整除,则该数是素数。
下面是一个简单的判断素数的函数程序示例:```#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("d", num);if (isPrime(num)) {printf("d是素数\n", num);} else {printf("d不是素数\n", num);}return 0;}```在上面的代码中,我们首先定义了一个判断素数的函数isPrime,这个函数接受一个整数参数num,并返回一个整数值。
在主函数main中,我们输入一个整数,然后调用isPrime函数进行素数的判断,并输出结果。
二、调用函数进行素数判断通过上面的函数程序,我们可以很方便地调用isPrime函数对用户输入的数进行素数的判断。
在C语言中,我们可以使用scanf函数来接受用户输入的整数,然后调用isPrime函数进行素数的判断,并输出结果。
下面是一个完整的调用函数进行素数判断的例子:```#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num i == 0) {return 0;}}return 1;int main() {int num;printf("请输入一个整数:");scanf("d", num);if (isPrime(num)) {printf("d是素数\n", num);} else {printf("d不是素数\n", num);}return 0;}```在上面的代码中,我们定义了一个判断素数的函数isPrime,并在主函数main中接受用户输入的数,然后调用isPrime函数进行素数的判断,并输出结果。
河北工业大学计算机软件基础(vc)
学院:电气信息类班级:电信c1124 姓名:李悠学号:110706 一,题目:查找满足要求的素数
二,设计思路
1,总体设计
(1)分析程序的功能,用来判断整数d是否为素数,任意输入一个数d,判断是否为可逆素数,如果皆为素数的话,该数d
为可逆素数,在d为可逆素数的基础上xd=d+1为偶数,找
出满足xd=d1+d2的所有数时,其中要求d1与d2均为素数(2)系统总体的机构
每一次查找的过程可以由这几部分完成,编制函数void prim()用筛选法求素数,编制函数void compose(in d)将一个数分解为两个素数的形式,编制主函数int main()将输入的数值设置为字符型。
正序赋值给整数得到数值n,当输入的不是数值时提示重复输入直到纠正为止,然后将整数逆序得到m,先判断n是否为素数输出不是素数,若为素数再判断m是否为素数,若都为素数将n+1分解成两个素数
每一次查找关注的结果有三个:(1)是否输入的为数字,若不
是反复输入直到输入的是数字为止,(2)是否为素数(3)是否为可逆素数(4)将素数分解成两个素数相加的形式并输出结果2各功能模块的设计:说明各功能模块的实现方法
(1)prim模块
该函数没有返回值所以函数类型为void型,要实现的功能是用筛选法求出素数,将数组中下,标为0和1的元素设置为0,下标为n-2的元素设置为1,然后从下标为2的元素开始查找当发现当前位置的数组元素为1时,将下标是当前下标的2倍3倍……的那些元素全部设置为0。
重复(2)直到考查了数组全部元素,那些值依旧为1的元素下标都是素数,数组元素的值为1是素数,为0不是素数
(2)compose模块
该函数没有返回值,所以函数类型为void型,要实现的功能是将一个数分解为两个素数,通过判断条件prim【i】是否1来判断分解的数是否为素数,最后找出满足条件的数对(3)m ain函数
将输入的数值设置为字符型,当输入的是数值时正序赋值给整数得到数值n,当输入的不是数值时提示重复输入直到正确为止,然后将整数逆序得到m,通过判断prim【n】的值判断n 是否为素数,若为0则输出结果n不是素数,若为1则输出结果为素数。
然后判断prim【m】的值,若为1输出它且是可逆素数,并调用函数compose进行素数分解,若prim【m】的值
为0输出且它不是可逆素数。
3创新设计部分
通过循环执行程序,若退出输入0,若选择继续则可进行其他数的可逆素数判断。
因此该程序有运行且多次输入的功能。
使用for循环输入数值,若不是字符型的推出本次循环进入下次循环直到输入正确为止。
4设计中的主要困难和解决方法
将输入的任意数值进行可逆转换,可以将输入的数值设置为字
符型,通过判断字符的长度决定数值的大小,并将字符正序及
逆序赋值给整数得到n及其逆序数值
5设计的程序最终完成的功能
(1)任意输入一个数,判断其是否为可逆素数,如果皆为素数的话,该数为可逆素数,在为可逆素数的基础上xd=d+1为偶数,找出满足d=d1+d2的所有数对,其中要求d1与d2均为素数
(2)准备的测试数据及运行结果
三程序清单
(1)main函数
int main()
{
int n,m;
char tmp[20];
Prim();
cout<<"请输入一个数字(在1到10000000之间),本程序将判断其是否为素数。
输入数字0结束程序\n"<<endl;
while(cin>>tmp)
{
int isend=0,re=0;
n=m=0;
for(int i=0;tmp[i];i++)
{
if(tmp[i]>='0'&&tmp[i]<='9')
n=n*10+(tmp[i]-'0');
else
{
cout<<"输入有误!!请输入数字!!"<<endl;
re=1;
break;
}
}
if(re)
continue;
if(n==0)
{
cout<<"程序运行结束"<<endl;
break;
}
int tmp=n;
while(tmp)//求逆序数
{
int a=tmp%10;
tmp=tmp/10;
m=m*10+a;
}
if(!prim[n])
{
cout<<n<<"是素数!!"<<endl;
if(!prim[m])
{
cout<<"且它是可逆素数"<<endl;
Compose(n+1);//素数分解
}
else
cout<<"且它不是可逆素数"<<endl;
}
else
cout<<n<<"不是素数!!"<<endl;
}
}
(2)prim函数
void Prim()//筛选法求素数表
{
for(int i=2;i*i<max;i++){
if(!prim[i])
for(int j=i*i;j<max;j+=i)
prim[j]=1;
}
prim[1]=1;
}
(4)c ompose函数
void Compose(int d)
{
for(int i=2;i<=d/2;i++)
{
if(!prim[i]&&!prim[d-i])
cout<<d<<"="<<i<<"+"<<d-i<<endl;
}
}
四对设计题目有何更完善的方案
1,对自己完成程序进行自我评价:我的程序较好的完成了任务只中规定的设计内容,并完成了创新要求的设计,运行正确。
2,对课题提出更完善的方案:在显示结果的时候考虑用ASCLL 码绘图的方式显示,并加上控制使得程序获得更高地友好度和吸引力。
五收获和心得体会
通过一周的课程设计我体会到c++是与现代社会息息相关的学科,它能高效快捷地帮助人们解决问题并可用于科学研究但做好程序设计需要严谨的态度和丰富的c++知识储备,并需要严密的思维通过c++课程设计了解了c++所涉及到的学科领域的广泛,学好c++会为以后的学习和生活带来方便
2012年6月29日。