C++分解质因数

来源:互联网 发布:大数据时代论文3000字 编辑:程序博客网 时间:2024/06/05 19:09
问题描述:
求出区间[a,b]中所有整数的质因数分解。输入格式  输入两个整数a,b。输出格式  每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=2*25=56=2*37=78=2*2*29=3*310=2*5提示  先筛出所有素数,然后再分解。数据规模和约定  2<=a<=b<=10000

代码:

#include <cstdio>  #include <iostream>  #define max 10000    int prime[max];    int isPrime(int n)  {      int flag = 1;      for(int i = 2; i*i <= n; i++)          if(n%i == 0)              flag = 0;      return flag;  }    int getPrime(int m)  {      int cnt = 0;      int flag = 1;            for(int i = 2; i <= m; i++){          flag = 1;          for(int j = 2; j*j <= i; j++)              if(i%j == 0)                  flag = 0;          if(flag)              prime[cnt++] = i;      }            return cnt;  }  void split(int m)  {      int i = 0;      int t = 0;      while(m != 1){          t = m/prime[i];          if(t*prime[i] == m){              m /= prime[i];              if(m != 1)                 printf("%d*",prime[i]);              else                  printf("%d",prime[i]);          }          else              i++;      }      printf("\n");  }  int main()  {      int st,end;      int cnt = getPrime(10000);      scanf("%d%d",&st,&end);        for(int i = st; i <= end; i++)      {          if(isPrime(i))              printf("%d=%d\n",i,i);          else          {              printf("%d=",i);              split(i);          }      }          return 0;  }  

转载来自:http://blog.csdn.net/u012027907/article/details/21447447

0 0
原创粉丝点击