分解质因数

 
分解质因数代码:
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
 重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
#include<stdio.h>
main()
{
  int n,i;
  scanf("%d",&n);
  printf("%d=",n);
  for(i=2;i<=n;i++)
    while(n!=i)
    {
      if(n%i==0)
      {
        printf("%d*",i);
        n=n/i;
      }
      else
        break;
    }
  printf("%d",n);
}

另一个代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int factor[50];

int trial_divisio_fac(int n)
{
    int a=2;
    int cnt=0;
    while(a*a<=n)
    {
        while(n%a==0)
        {
            factor[cnt++]=a;
            n=n/a;
        }
        a++;
    }
    if(n>1) factor[cnt++]=n;
    return cnt;
}

 

void solve(int n)
{
    while(n%2==0)
    {
        printf("%d*",2);
        n/=2;
    }
    for(int i=3; i<=sqrt(n); i+=2)
    {
        if(n%i==0)
        {
            n/=i;
            printf("%d*",i);
            i-=2;
        }
    }
    printf("%d\n",n);
}

 

posted @ 2016-11-03 20:22  Pacify  阅读(570)  评论(0编辑  收藏  举报