• 基础练习 分解质因数


    问题描述
      求出区间[a,b]中所有整数的质因数分解。
    输入格式
      输入两个整数a,b。
    输出格式
      每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
    样例输入
    3 10
    样例输出
    3=3
    4=2*2
    5=5
    6=2*3
    7=7
    8=2*2*2
    9=3*3
    10=2*5
    提示
      先筛出所有素数,然后再分解。
    数据规模和约定
      2<=a<=b<=10000
     
    没啥好说的,遍历就行,遇到质因数输出。
     1 #include<stdio.h>
     2 #include<stdbool.h>
     3 #include<math.h>
     4 
     5 bool isPrimeNum(int n)
     6 {
     7     int i;
     8     int flag = 0;
     9 
    10     for (i = 2; i <= sqrt(n); i++)
    11     {
    12         if (n % i == 0)
    13         {
    14             flag = 1;
    15         }
    16     }
    17 
    18     if (flag == 0)  //flag == 0 so this num is a Prime Num
    19     {
    20         return true;
    21     }
    22     else
    23     {
    24         return false;
    25     }
    26 }
    27 
    28 int main()
    29 {
    30     int a, b;
    31     int i, j;
    32 
    33     scanf("%d %d", &a, &b);
    34     for (i = a; i <= b; i++)
    35     {
    36         int flag2 = 0;
    37         int tem = i;
    38         if (isPrimeNum(i)) //if it is a prime number
    39         {
    40             printf("%d=%d
    ", i,i);
    41         }
    42         else
    43         {
    44             printf("%d=", i);
    45             for (j = 2; j < i; j++)
    46             {
    47                 if (tem % j == 0)  //如果遇到质因数才会输出,即让flag2 = 1;
    48                 {
    49                     tem /= j;
    50                     j--;
    51                     flag2 = 1;
    52                 }
    53 
    54                 if (tem-1 == 0 && flag2 == 1) //如果tem=1了就说明到了最后就不用输出*
    55                 {
    56                     printf("%d", j+1);
    57                 }
    58                 else if(tem-1 != 0 && flag2 == 1)
    59                 {
    60                     printf("%d*",j+1);
    61                 }
    62                 //j--;
    63                 if (tem-1 == 0)
    64                 {
    65                     break;
    66                 }
    67 
    68                 flag2 = 0;
    69             }
    70             printf("
    ");
    71         }
    72     }
    73     return 0;
    74 }
  • 相关阅读:
    markdown样式代码保存
    【python系统学习08】for循环知识点合集
    【python系统学习07】一张图看懂字典并学会操作
    【python系统学习06】一张图看懂列表并学会操作
    java后端学习记录
    支付功能设计及实现思路
    《Kafka权威指南》读书笔记
    ReentrantLock源码简析
    敏捷开发流程
    上线新功能,如何兼容旧数据?
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12689968.html
Copyright © 2020-2023  润新知