分解质因数

Description

 

求出区间[a,b]中所有整数的质因数分解。

 

Input

 

输入两个整数a,b。

 

Output

 

每行输出一个数的分解,形如k=a1a2a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)

 

Sample Input 1 

3 10

Sample Output 1

3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5

Hint

提示

先筛出所有素数,然后再分解。

数据规模和约定

2<=a<=b<=10000

 

Solution

其实就是展示判断质因数过程,判断该数能否被从2开始到该数的平方根整除,如果能被某数整除,这个数更新为除以某数之后的结果,同时需要判断能不能再一次被该数整除,如果不能就将某数加一。同时由于某数只自增到平方根,有可能存在因数大于平方则无法输出,还有可能本身就是质数。

#include<stdio.h>
#include<cmath>

int main() {  

int a, b;

  int i,j,m;
  scanf("%d%d", &a, &b);
  for (i = a; i <= b; i++) {
    printf("%d=", i);  
    m = i;
    for (j = 2; j <= sqrt(i); ) {  
      if (m % j == 0) {
        m = m / j;
        if (m > 1) {
          printf("%d*", j); continue;
        }
        if(m==1){
          printf("%d", j);
        }
      }
      j++;
    }
    if (m < i && m>1) {
      printf("%d", m);
    }
    if (m == i) {
      printf("%d", i);
    }
    printf("\n");
  }

return 0;
}

posted on 2020-08-10 14:56  Taurus20000519  阅读(116)  评论(0)    收藏  举报