当前课程知识点:C语言程序设计(上) >  循环结构的程序设计(一) >  4.4 循环控制——简单循环应用 >  4.4.2--循环的应用-求素数

返回《C语言程序设计(上)》慕课在线视频课程列表

4.4.2--循环的应用-求素数在线视频

4.4.2--循环的应用-求素数

下一节:水仙花数.c

返回《C语言程序设计(上)》慕课在线视频列表

4.4.2--循环的应用-求素数课程教案、知识点、字幕

大家好

我们下面再看几道例题

第一个是判断素数

大家知道

素数

是什么数呢

就是能够被

1和它本身整除之外

再也不能被任何数整除了

这就是素数

比如说

7

能被1整除

能被7整除

这个过程还能被

2 3 4 5 6里边的

任何一个数整除吗

不能啦

那7一定是个素数

比如说15

能够被1和15整除

它还能被谁整除

能被3整除

能被5整除

那它一定不是素数了

都不用判断5

到3就为止了

只要能被一个数整除

除过它自身和1之外

任何一个数整除

它就不是素数了

那我们大家看

在判断任何一个数

它是不是素数的时候

它的游戏规则一定是

从2开始的

你输进来一个数

我从2开始

除以2

能整除吗

如果能

3都不用试啦

这个数就不是素数了

如果不能再除以3

除以4

一直如果到了

你输的那个数前面那个数

都不能整除

这就是我们要的那个素数

大家看程序是不是这样

先scanf

读你这个数进来

然后呢

进入循环

我们用for构建这个循环

是因为

它的初值

终值

和不常值

都是非常清楚的

从2开始

到谁呢

到你输进来的那个数的前边那个数

所以也就是小于

你读的是 n

那循环控制变量i小于n

就可以了

增量呢

每步增量1呀

增量1

所以它是非常适合用for

去构建这个循环的

那在循环体里边做什么呢

只要做一件事

你读进来的n

除以当前的i

能整除吗

就是求余

余数是0吗

如果是0就整除了

如果整除了

我们做了一件什么事

把0赋值给

isPrime

isPrime是什么呢

是我们开始定义的一个整型的变量

给它赋的初值是1

如果在循环体里边

它被赋值过0

那就说明

它有能被整除的数

那这个数就不是素数了

否则

一直到循环完

它们都没有被改变过

isPrime

没有被改变过

那说明这个数就是素数了

所以呢

循环结束了以后

我们只要判断

if

if里边呢

ifPrime是真的吗

如果是真的

那就说明它没有被改变过

循环里边没有改变过它的值

它就是素数

否则

它不是素数

底下的判断

只是判断

isPrime里边是

1还是0

是真的还是假的

是真的

就是素数

否则它就不是素数

大家可以把这个程序

拿过去自己运行一下

因为关于素数

怎么求素数

网上

书上

都有

因为是很经典的一个问题

大家下去自己可以

调试一下

我们下边再看

一道题目

是大数分解

什么叫大数分解

所谓若干因子

是什么呢

其实也就是说

你把这个数分解成

若干素数的乘积

比如说

我们还说15

那15

能等于

它的因子都是谁呢

除过

15能被谁整除呢

我们也是从2开始

15除以2

能整除吗

不能整除

15再除以

往后除以3

能整除啦

那15这个数

3就是它的一个因子

再除以4

能整除吗

不能

那除以5能整除吗

那5就是它的一个因子

那再往后找6 7 8

都没有了

那15这个数

它的因子是谁呢

3和5

那我们任何一个大数

都可以分解成

若干个这样的因子的

乘积

那我们说

最主要的这里边说 什么是因子

其实

我们前面讨论过素数

其实

任何一个数

可以分解成

若干个素数的乘积

因子也就是说

能被整除的那些数

都是这个数的因子

就这个数

都能被谁整除呢

凡是被能整除的那些数

都是它的因子

那这个数就是它

这些因子的乘积

这程序因为很简单

我们从键盘上获取这个数

然后呢

一定不是从1开始的

大于1

那我们就是从2开始的

然后呢

判断的条件是什么呢

你这个a

不等于1吗

因为我们要大于1呀

不能等于1

只要不等于1

我就进入这个循环

在循环体里边做什么呢

我先拿你送的这个数

和我当前的循环控制变量

我的控制变量是从2开始的

当前这个数

是2

就是问

2是它的约数吗

那你输入的这个数

键盘上敲进来这个数

与2去求余

你的余

是没有余数吗

没有余数就是能整除啦

那好的

那你

整除的这个数是多少呢

把这个除下来

给了a

我现在要的就是你

当前的循环控制变量

这就是你那个约数

那这一步是做什么呢

找下一个

你要做的那个数

那循环回来时a是我的

判断

到这

你现在的a

还没到1吗

比如说我

输入的a是100的话

那我刚才才做了

这个a除以这个i

那是50啊

50不等于1吗

当然是啦

再往下做

50当然不等于100啦

依次循环

我们到这

把所有是约数的打印出来

否则

你就不打印

这个否则跟谁对着呢

跟if

否则

你就把这个i

循环控制变量往上涨一个

就可以了

这道题也很简单

大家下去自己可以运行一下

运行 调试

并且在里边也可以做一些改变

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

4.4.2--循环的应用-求素数笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。