因子分解相关 整理
2014-03-30 16:39
134 查看
输入90,打印出90=2*3*3*5。
#include <stdio.h>#include <stdlib.h>#include <math.h>main(){ int n,i,j,k; scanf("%d",&n); printf("%d=",n); i=0; while(n!=i) { for(i=2;i<n;i++) { if(n%i==0) { printf("%d*",i); n=n/i; break; } } } printf("%d\n",n); system("pause"); return 0;}
大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm
例如:当n=12时,共有8种不同的分解式:12 = 1212 = 6*212 = 4*312 = 3*412 = 3*2*212 = 2*612 = 2*3*212 = 2*2*3对于给定正整数n,计算n共有多少种不同的分解式。
#include <iostream>#include <stdlib.h>using namespace std;int num=0;void solve(long n){ if(1==n){ num++; }else if(1<n){ for(int i=n;i>=2;i--) { double result=n*1.0/i; if(result==(long)result){ solve(n/i); } } }}int main(){ long n; cin>>n; solve(n); cout<<num<<endl; system("pause"); return 0;}
#include "stdio.h"#include "math.h"#include "conio.h"int main(){ unsigned long i,j,k,h,m,n; double weizhi; while(scanf("%ld",&n)!=EOF) { printf("%ld =",n); h=1; m=n; weizhi=sqrt(n); for(j=1,i=2;i<=weizhi&&m!=1;j++,i=2*j-1) { k=0; while(!(m%i)) { k++; m=m/i; } if(k==1) { if(h==1){printf(" %ld",i); h++;} else {printf(" * %ld",i); h++;} } if(k>1) { if(h==1){printf(" %ld^%ld",i,k); h++;} else {printf(" * %ld^%ld",i,k); h++;} } } if(h==1) printf(" %ld",n); else if(m>1)printf(" * %ld",m); printf("\n"); } return 0; }
相关文章推荐
- 数论之 素因子分解,素数筛选法,欧拉函数和扩展欧几里得算法 (整理)
- java正则表达式相关内容整理
- iptables/netfilter分析和相关链接整理
- [转]网站架构相关PPT、文章整理(更新于2009-7-15)
- 统计一个数分解质因数中不同因子的个数
- [收集|整理]优化SQL Server数据库相关注意事项
- 进程相关知识的整理
- 负边距(negative margin)的相关问题整理
- 多线程相关概念整理
- POJ 2992 Divisors(阶乘的素因子分解)
- Github开源Android资源整理(九)公共库,高版本向低版本兼容,多媒体相关,事件总线(订阅者模式),传感器
- dcmtk printscu相关的资料整理
- 直流无刷电机控制相关问题整理
- HDU 1452 Happy 2004 (素因子分解+快速幂模+乘法逆元)
- 本博使用的vim(gvim)相关插件整理
- 整理Android 显示系统相关文章及链接
- oralce中相关的概念整理
- HTML5 Canvas 开发 绘图方法整理 【五、canvas text / 文本、文字相关】
- 基于IOS上MDM技术相关资料整理及汇总
- XtraPivotGrid相关教程整理(三)