您的位置:首页 > 其它

因子分解相关 整理

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;   }

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: