输入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 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2*3*2 12 = 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; }
因子分解相关 整理
最新推荐文章于 2019-05-28 14:29:32 发布