返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言用递归函数对素数进行判断流程
  • 257
分享到

C语言用递归函数对素数进行判断流程

2024-04-02 19:04:59 257人浏览 薄情痞子
摘要

目录前言思路简述代码实现前言 本文介绍递归函数实现素数判断。 事实上,递归算法判断素数的本质是试除法,且递归算法在本题中并不具有优势。它不仅没有优化原算法,还增加了空间复杂度与时间复

前言

本文介绍递归函数实现素数判断。

事实上,递归算法判断素数的本质是试除法,且递归算法在本题中并不具有优势。它不仅没有优化原算法,还增加了空间复杂度与时间复杂度。

时间复杂度和空间复杂度都是0(N),实现效率可想而知。

那为什么还要写呢?仅作为开拓思路、加深对递归函数的理解而为之。其实很多基础的算法,包括斐波那契数列、闰年等,都可以用递归实现。递归思路能将复杂的问题呈现以简单的思路,这是它的优势。通过简单问题的递归实现,大家可以提前熟悉递归的构造和运用,为后续学习数据结构“树”的相关内容作铺垫。

在实际应用中,最好还是挑选简便高效的代码实现。

题干:用递归函数判断一个自然数是否为素数。

思路简述

1. 素数:该数除了1和它本身以外不再有其他的因数(否则称为合数)。每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积。最小的质数是2。

2. 试除法

思路

1. 要判断数 i 是否为素数,由上述定义可知,需要判断除了1和它本身以外是否还有其他因数。

2. 判断方式:试除。将该数与从2到 i-1 之间所有的数除一除,看除不除得尽。若除得尽,说明该数有除了1和它本身外的其它因数,因此它就不是素数。要是除不尽,那就是素数。(该部分用递归可以实现)

3. 偶数一定不是素数,因而能被2模尽的数不是素数。

试除法参考代码如下

//试除法例题--打印100到200之间的素数
int main()
{
	int i = 0;
	int count = 0;
	for(i=101; i<=200; i+=2)    //跳过所有的偶数
	{
		//判断i是否为素数
		//2->i-1
		int j = 0;
		for(j=2; j<=sqrt(i); j++)
		{
			if(i%j == 0)
				break;
		}
		if(j > sqrt(i))
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount = %d\n", count);
	return 0;
}

4. 将循环部分抽象成递归

由于每次判断素数的抽象步骤都是一样的:取模 --> 除尽了吗?(模为0吗) --> 除尽了,不是素数 --> 没除尽,接着除,全除完了还没有发现一个能除尽的 --> 是素数。

因而,改装成如下代码。

代码实现

#include<stdio.h>
int isPrime(int num, int divide)
{
	if(num == 2)    //2是最小的质数
		return 1;
	if(divide == 2)      //divide为2时,递归层数已经很深了
		return (num % 2 != 0);    //若(num % 2)为0,则为偶数不是素数,返回0(false);
                                  //反之返回1(true)
	if(num % divide == 0)
		return 0;    //如果能除尽,就不是素数
	else
		return isPrime(num, divide - 1);    //递归调用语句,含义是遍历从2到(num-1)中的所有数
                                            //用(divide-1)实现模数每次递减1,挨个遍历
}
int main()
{
	int num;
	scanf("%d", &num);
	printf("%d", isPrime(num, num - 1));
	return 0;
}

到此这篇关于C语言用递归函数对素数进行判断流程的文章就介绍到这了,更多相关C语言素数判断内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言用递归函数对素数进行判断流程

本文链接: https://lsjlt.com/news/168148.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言用递归函数对素数进行判断流程
    目录前言思路简述代码实现前言 本文介绍递归函数实现素数判断。 事实上,递归算法判断素数的本质是试除法,且递归算法在本题中并不具有优势。它不仅没有优化原算法,还增加了空间复杂度与时间复...
    99+
    2024-04-02
  • 用c语言编程实现素数判断(判断素数的c语言程序函数)
    以下是一个用C语言编写的判断素数的函数:```c#include #include bool isPrime(int n) {if ...
    99+
    2023-09-22
    c语言
  • c语言怎么调用函数判断素数
    可以封装一个函数来判断一个数是否为素数,然后在主函数中调用这个函数来判断。以下是一个示例代码:```c#include int is...
    99+
    2023-10-12
    c语言
  • 用c语言怎么判断素数
    判断素数的方法有蛮力法和埃拉托斯特尼筛法。蛮力法通过逐一尝试从 2 到数字平方根的取模来判断素数,若取模结果有 0 则不是素数。埃拉托斯特尼筛法利用标记数组来跟踪从 2 到给定范围的素数...
    99+
    2024-05-14
    c语言
  • c语言怎么判断素数
    判断一个数是否为素数,可以通过以下方法实现:1. 如果给定的数小于2,则它不是素数。2. 对于大于等于2的数,从2到其平方根之间的所有数,依次判断该数是否能被这些数整除。- 如果能被整除,则它不是素数,返回false。- 如果不能被整除...
    99+
    2023-08-11
    c语言
  • C语言的递归函数详解
    目录函数递归什么是递归?递归的俩个必要条件代码引例1栈溢出(Stack Overflow)合理使用递归代码引例3代码引例4解释要合理使用递归总结函数递归 程序调用自身的编程技巧称为递...
    99+
    2024-04-02
  • C语言函数的递归调用详情
    目录一、什么是递归二、递归与迭代一、什么是递归 程序调用自身的编程技巧称为递归( recursion) 。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直...
    99+
    2024-04-02
  • C语言函数的递归怎么调用
    这篇文章主要讲解了“C语言函数的递归怎么调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言函数的递归怎么调用”吧!一、什么是递归程序调用自身的编程技巧称为递归( recursion) ...
    99+
    2023-06-30
  • C语言递归函数如何实现
    这篇文章主要介绍“C语言递归函数如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言递归函数如何实现”文章能帮助大家解决问题。一、递归的数学思想递归是一种数学上分而自治的思想递归需要有边界条...
    99+
    2023-06-30
  • C语言 function recursion函数递归详解
    目录function recursion(函数递归)递归的中心思想为:程序一递归的两个必要条件程序一:程序二:练习求n的阶乘再来道例题function recursion(函数递归)...
    99+
    2024-04-02
  • c语言怎么循环判断素数
    C语言循环判断素数的一种常见方法是使用嵌套循环。具体步骤如下: 首先,定义一个变量num,用于接收输入的数字。 然后,使用嵌套循环...
    99+
    2023-10-21
    c语言
  • C语言判断数是否为素数与素数输出
    目录1.判断单个数是否为素数(多组输入)2.输入范围输出范围内的素数3.总结素数的概念:素数也叫质数,是一种只能被自己本身和1整除的数并且大于1,当然0与1不是素数。 1.判断单个数...
    99+
    2024-04-02
  • C语言用递归函数实现汉诺塔
    目录汉诺塔(Hanoi)是什么?那么,C语言如何实现汉诺塔呢?汉诺塔的基本思路是:具体代码见下(注意点在代码下面):总结汉诺塔(Hanoi)是什么? 一个简单的汉诺塔就如上图所示...
    99+
    2024-04-02
  • c语言深入理解函数的递归
    前言:  首先,递归是什么,递归就是在定义函数时,然后在函数里调用这个函数,通俗讲,就是函数自己调用自己。那么递归的好处是什么呢?它能够将复杂的问题,用少量的代码来表示,增加了代码的...
    99+
    2024-04-02
  • C语言超细致讲解函数递归
    目录前言什么是递归递归的两个必要条件题解递归递归与迭代练习题结束语前言 最近被函数递归困恼许久,今天就带领大家一起探秘递归。 什么是递归 程序调用自身的编程技巧称为递归( recur...
    99+
    2024-04-02
  • c语言素数判断代码怎么写
    以下是一个用C语言编写的判断一个数是否为素数的代码示例: #include <stdio.h> int isPrime...
    99+
    2023-10-21
    c语言
  • c语言判断数字的函数怎么使用
    在C语言中,我们可以使用一个简单的函数来判断一个数字是正数、负数还是零。下面是一个示例代码: #include <stdio....
    99+
    2024-04-02
  • c语言怎么判断素数个数的大小
    在 c 语言中判断素数个数大小的方法有多种,包括:暴力判断法:逐个检查数字是否被 2 至自身以外的数整除。埃拉托斯特尼筛法:标记素数的倍数为合数,并统计素数个数。素数表法:预先生成素数表...
    99+
    2024-05-14
    c语言
  • C语言中函数递归的示例分析
    这篇文章主要介绍C语言中函数递归的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是递归?递归(recursion):程序调用自身的一种编程技巧。如何理解函数递归:从调用自身层面:函数递归就是函数自己调用自...
    99+
    2023-06-29
  • c语言怎么判断素数循环结构
    判断一个数是否为素数的常见方法是使用循环结构。以下是一个用C语言编写的判断素数的程序:c#include int main() {i...
    99+
    2023-10-20
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作