输入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; }
0 0