C++质数递归程序
我们得到一个整数作为输入。目标是使用递归找出输入数字Num是素数还是非素数。
要检查一个数是否为质数,请从i=2开始遍历到i<=Num/2。如果任何i可以被Num完全整除,则该数字是非素数,因为素数只能被1和数字本身整除。
例子
输入 -数字=32
输出 -32是非质数!
说明 -如果我们从i=2开始遍历到i<=32/2,那么首先它将被2完全整除,这表明它是非质数。
输入 -数字=43
输出 -43是一个质数!
说明-如果我们从i=2开始遍历到i<=43/2,那么它将不能被2到21之间的任何数字整除。这表明它是素数。
下面程序中使用的方法如下
在这种方法中,我们使用递归函数checkPrime(intnum1,intindex),它接受输入数字和索引,它将采用从2到num1/2的值。
对于基本情况-:如果num1<2返回1,因为它是非质数。
如果num1==2返回2,因为它是素数。
否则:-if(index<=num1/2)然后我们达到了没有索引完全划分num1的点,因此返回1因为它可能只适用于素数。否则使用result=checkPrime(num1,index+1)递归获取下一个索引
取输入数字Num
函数checkPrime(intnum1,intindex)接受输入,如果数字是素数则返回1,否则返回0。
如果num1<2返回0,因为小于2的数字是非质数。
如果num1是2或3,则返回1,因为2和3是素数。
如果num1%index<=num1/2然后返回1作为高达num1/2没有数字完全划分num1所以num1是素数
使用result=checkPrime(num1,index+1)递归获取下一个索引。
返回结果。
打印在main中获得的结果。
示例
#include <bits/stdc++.h> using namespace std; int checkPrime(int num1, int index){ if(num1<2){ return 0; } if (num1 == 2 || num1==3){ return 1; } if (num1 % index == 0){ return 0; } if (index <= num1/2){ return 1; } int result=checkPrime(num1, index+1); return (result); } int main(){ int Num = 31; if (checkPrime(Num,2)==1){ cout <<Num<<" 是素数!"; } else{ cout <<Num<<" 不是素数!"; } return 0; }输出结果
如果我们运行上面的代码,它将生成以下输出
31 is a Prime number!