#include <iostream> using namespace std; void prim(int m,int n){ if(m>=n){ while(m%n) n++; m/=n; prim(m,n); cout<<n<<endl; } } int main(){ int m=10986; prim(m,2); return 0; }
m%n 表示取余,余数为 0 时表示 n 能整除 m
当 n 不能整除 m 时,m%n 不为 0,表达式为真;否则跳出 while
跳出 while 表示找到了 m 的一个因子 n,因此将 m 除以 n,进入递归寻找新的因子
由于输出因子 n 的命令在递归之后,因此对重复的因子只会输出一次
显然只会输出素因子
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。