1006: 【基础】质因子(1080)
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:61
解决:37
题目描述
任意输入一正整数 ,求出它的所有质因子。如:,。
输入
输入只有一行,包括1个整数n (1<n<32768 )。
输出
输出若干行,按从小到大的顺序给出这个数的所有质因子,每行一个。
样例输入 复制
36
样例输出 复制
2
2
3
3
提示
n=int(input()) k=2 while True: if n==k: print(k) break elif n%k==0: print(k) n//=k else: k+=1
C/C++ 递归:
#include<bits/stdc++.h> using namespace std; void dfs(int n, int p){ if(n==1) return; if(n%p== 0){ cout<< p << endl; dfs(n/p,p); }else{ dfs(n,p+1); } } int main(){ int n; cin>>n; dfs(n,2); return 0; }
C/C++ 循环:
#include<bits/stdc++.h> using namespace std; int n; int main(){ cin>>n; //在2~n的范围内找质因子 int k=2; while(n!=1){ if(n%k==0){ cout<<k<<endl; n/=k; }else{ k++; } } return 0; }
C/C++ 自定义函数:
#include<bits/stdc++.h> using namespace std; int Decomposition(int x, int a[]){ //分解 x,数组a升序记录所有质数 //函数值返回分解出来的质数数量 int cnt=0; int k=2; while(x!=1){ if(x%k==0){ a[++cnt]=k; x/=k; }else{ k++; } } return cnt; } int main(){ int n,a[110]; cin>>n; int s=Decomposition(n,a); for(int i=1;i<=s;i++) { cout<<a[i]<<endl; } return 0; }