Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198185
  • 博文数量: 67
  • 博客积分: 2970
  • 博客等级: 少校
  • 技术积分: 685
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-23 11:36
文章分类

全部博文(67)

文章存档

2012年(2)

2011年(19)

2010年(46)

我的朋友

分类: C/C++

2010-07-25 11:13:20

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<map>
using namespace std;

int main()
{
    int n;
    map<int,int> factor;

    while(true)
    {
        scanf("%d",&n);    
        
        int i;
        for(i=2;i*i<=n;i++)
            while(n%i==0)
            {
                factor[i]++;n/=i;     //用map来记录因子以及因子的次幂

            }

        if(n!=1) factor[n]++;         //对于素数的考虑


        for(map<int,int>::iterator iter=factor.begin();iter!=factor.end();iter++)
        {
            if(iter!=factor.begin()) printf("×");
            printf("%d^%d",iter->first,iter->second);
        }
        printf("\n");

        factor.clear();
    }
    
    return 0;
}

 

因子分解结果:x=a1^p1*a2^p2*……*an^pn

例如:12=2^2*3^1

阅读(816) | 评论(0) | 转发(0) |
0

上一篇:hdu1242 Rescue

下一篇:hdu1175 连连看

给主人留下些什么吧!~~