c语言质因数分解算法简单,质因数分解C语言

  c语言质因数分解算法简单,质因数分解C语言

  #包含stdio.h

  void prim(int n,int i){

  if(n=i){

  while(n % i){

  我;

  }

  n/=I;

  prim(n,I);

  printf(%d\n ,I);

  }

  }

  int main(){

  int num,I=2;

  scanf(%d ,编号);

  prim(num,I);

  返回0;

  }运行结果:

  而(n% i)代表余数。当余数为0时,表示除法,结束while循环,即找到一个质因数,然后一个质因数就是I,如果没有除法,就继续执行I。I的最大值就是I的值等于N的值,当I等于N时,这个循环一定会结束,这是结束这个循环的最终条件。不会让程序陷入死循环。

  n/=I;让n去掉这个素因子,然后进入寻找新的n个素因子的递归。

  例如:

  求15的因式分解质因数

  当n=15时,I=2;

  第一次执行Prim功能:

  判断15=2

  执行结果

  真实的

  第一次执行循环体时:

  而(15 % 2)

  执行I?

  执行结果

  真实的

  真实的

  注意:在C语言中,1为真,0为假。当n% i的结果为0时,循环体将结束。

  第二次执行循环体时:

  而(15 % 3)

  执行I?

  执行结果

  错误的

  错误的

  此时,while循环结束。

  开始执行n/=I;语句,它是通过以下过程实现的

  15/3=5;n=5;

  使用n的值作为质因数(循环结束后获得的I结果),然后将商赋给n。

  再次调用prim(n,I)函数。

  prim函数的第二次执行:

  判断5=3

  执行结果

  真实的

  第一次执行循环体时:

  而(5 % 3)

  执行I?

  执行结果

  真实的

  真实的

  第二次执行循环体时:

  而(5 % 4)

  执行I?

  执行结果

  真实的

  真实的

  第二次执行循环体时:

  而(5 % 5)

  执行I?

  执行结果

  错误的

  错误的

  此时,while循环结束。

  开始执行n/=I;语句,它是通过以下过程实现的

  5/5=1;n=1;

  使用n的值作为质因数(循环结束后获得的I结果),然后将商赋给n。

  再次调用prim(n,I)函数。

  第三次执行Prim功能:

  1=5

  执行结果

  错误的

  第三个函数执行完毕,开始逐层完成第一个和第二个函数。

  接下来,打印结束第二次运行的prim函数的5。

  最后,完成了prim函数的第一次运行。打印3。

  所以得出结论,3和5是15的分解素因子。

  注意:整个递归过程中变量I的初始值是2,不会在每次调用prim(n,I)函数时初始化。在递归过程中通常使用同一个变量I的值。只有当主函数程序结束时,变量I的值才会在内存中被销毁,当程序再次运行时,变量I的值会被初始化为2。

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: