当前位置:网站首页>C语言初级—判断一个数是不是素数(函数封装)
C语言初级—判断一个数是不是素数(函数封装)
2022-08-02 14:03:00 【iccoke】
判断一个数是不是素数
基本思想:从键盘获取一个数字,判断其是不是素数并用函数形式封装
首先函数主题是判断一个数是不是素数和函数体调用
素数是指除了一和他本身之外不能被其他数整除的数
因此从二开始作为键盘输入数的除数
如果在二到键盘输入数之间的能有别的数将其整除说明该数不是素数
反之在遍历了二到键盘输入数之后依旧没有被整除的数即为素数
依此思想得到的初始代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
bool isprimer(int num) {
int i;
bool flag=false;
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
}
if (i == num)
{
flag = true;
}
return flag;
}
int main() {
int num;
scanf("%d", &num);
bool result = isprimer(num);
if (result == true)
{
printf("这是素数\n");
}
else {
printf("这不是素数\n");
}
return 0;
}代码体涉及的函数体及其调用
bool isprimer(int num) {
int i;
bool flag=false;
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
}
if (i == num)
{
flag = true;
}
return flag;
}
bool为函数返回值类型 Isprimer为函数名(函数名要做到见名知意)
其中false 和 true不需要进行额外定义
return的返回值需要与函数返回值类型相同
函数的调用
int main() {
int num;
scanf("%d", &num);
bool result = isprimer(num);
if (result == true)
{
printf("这是素数\n");
}
else {
printf("这不是素数\n");
}
return 0;
}函数的调用出现在
bool result = isprimer(num);
num为实际参数,而函数体内定义的为形式参数,两者在数值上相同,但在意义上不同,即实际参数和形式参数其中任一改变不会影响另一个参数
因为 isprimer()得到的值为bool类型,因此需要定义一个bool类型的result来接收isprimer()返回的值
其中涉及头文件#define _CRT_SECURE_NO_WARNINGS的使用
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.(这是在不添加头文件#define _CRT_SECURE_NO_WARNINGS下使用scanf的错误)。
因此根据错误我们选择使用scanf_s代替scanf或者使用头文件
但scanf_s在vs上可以运行,但是换成其它编译器则会出现问题,因此为了方便搬运和代码复用,我们在使用scanf时应加头文件#define _CRT_SECURE_NO_WARNINGS。
代码优化
根据思想,我们发现代码中出现冗余,做如下修改
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
bool isprimer(int num) {
int i;
bool flag=false;
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
else {
flag = true;
}
}
return flag;
}
int main() {
int num;
scanf("%d", &num);
bool result = isprimer(num);
if (result == true)
{
printf("这是素数\n");
}
else {
printf("这不是素数\n");
}
return 0;
}边栏推荐
猜你喜欢

鼠标右键菜单栏太长如何减少

Visual Studio配置OpenCV之后,提示:#include<opencv2/opencv.hpp>无法打开源文件

(ROS) (03) CMakeLists. TXT, rounding

What's wrong with running yolov5 (1) p, r, map are all 0
![[ROS] The difference between roscd and cd](/img/a8/a1347568170821e8f186091b93e52a.png)
[ROS] The difference between roscd and cd

Unit 10 Continuous Tuning

跑跑yolov5吧

STM32(F407)—— 堆栈

window10 lower semi-automatic labeling

What are the file encryption software?Keep your files safe
随机推荐
Unit 15 Paging, Filtering
paddleocr window10 first experience
8581 线性链表逆置
C语言sizeof和strlen的区别
Flask-RESTful request response and SQLAlchemy foundation
yolov5,yolov4,yolov3乱七八糟的
Chapter6 visualization (don't want to see the version)
Briefly write about the use and experience of PPOCRLabel
chapter7
Minio文件上传
Deep learning framework pytorch rapid development and actual combat chapter4
猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
第八单元 中间件
【VCU】详解S19文件(S-record)
[ROS] The difference between roscd and cd
宏定义问题记录day2
Unit 10 Continuous Tuning
Flask上下文,蓝图和Flask-RESTful
[ROS]roscd和cd的区别
Unit 8 Middleware