22:因子分解

22:因子分解

总时间限制: 1000ms 内存限制: 65536kB描述

输入一个数,输出其素因子分解表达式。

输入输入一个整数 n (2 <= n < 100)。输出输出该整数的因子分解表达式。 表达式中各个素数从小到大排列。 如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。样例输入

60

样例输出

2^2*3*5

来源习题(9-3)

  1 #include<iostream>
  2 #include<cmath>
  3 using namespace std;
  4 int vis[10001];
  5 int zs2;
  6 int zs3;
  7 int zs5;
  8 void f(int &n)
  9 {
 10     if(n%2==0)
 11     {
 12         zs2++;
 13         n=n/2;
 14         f(n);
 15     }
 16     else if(n%3==0)
 17     {
 18         zs3++;
 19         n=n/3;
 20         f(n);
 21     }
 22     else if(n%5==0)
 23     {
 24         zs5++;
 25         n=n/5;
 26         f(n);
 27     }
 28 }
 29 int main()
 30 {
 31     
 32         int n;
 33     cin>>n;
 34     for(int i=2;i<=sqrt(n+0.5);i++)
 35     {
 36         if(vis[i]==0)
 37         {
 38             for(int j=i*i;j<=n;j=j+i)
 39             vis[j]=1;    
 40         }    
 41     }//筛法求素数 
 42     f(n);
 43     int flag=0;
 44     if(zs2==1)
 45     {
 46         cout<<"2";
 47         flag=1;
 48     }
 49     else if(zs2>0)
 50     {
 51         cout<<"2^"<<zs2;
 52         flag=1;
 53     }
 54     
 55     if(zs3==1)
 56     {
 57         if(flag==1)
 58         {
 59             cout<<"*3";
 60             flag=2;
 61         }
 62         else 
 63         {
 64             cout<<"3";
 65             flag=2;
 66         }
 67     }
 68     else if(zs3>1)
 69     {
 70         if(flag==1)
 71         {
 72             cout<<"*3^"<<zs3;
 73             flag=2;
 74         }
 75         else 
 76         {
 77             cout<<"3^"<<zs3;
 78             flag=2;
 79         }
 80     }
 81     //cout<<"3^"<<zs3<<"*";
 82     if(zs5==1)
 83         if(flag==1||flag==2)
 84         {
 85             cout<<"*5";
 86             flag=3;
 87         }
 88         else 
 89         {
 90             cout<<"5";
 91             flag=3;
 92         }
 93     else if(zs5>0)
 94         if(flag==1||flag==2)
 95         {
 96             cout<<"*5^"<<zs5;
 97             flag=3;
 98         }
 99         else 
100         {
101             cout<<"5^"<<zs5;
102             flag=3;
103         }
104     if(n!=1)
105     cout<<"*"<<n<<endl;
106     
107     return 0;
108 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Golang语言--计算运行的时间

函数time.Since() 计算golang运行的时间是非常有用的性能衡量指标,特别是在并发基准测试中。下面将介绍如何简单地使用Go语言来计算程序运行的时间。...

3608
来自专栏C语言及其他语言

【优秀题解】1168题【简单计算】题解

题目描述 有一个n+2个元素a[0], a[1], ..., a[n+1] (n <= 3000, -1000 <= a[i] <=1000)构成的数列. 已...

37010
来自专栏mathor

LeetCode130. 被围绕的区域

 bfs题,主函数中枚举每一个起点,如果是'O'就开始bfs搜索,首先将'O'变为'X',然后将周围是'O'都入队。这里有个地方要注意,如果'O'并不是被...

1002
来自专栏CreateAMind

深度学习框架TensorFlow 官方文档中文版

823
来自专栏吉浦迅科技

DAY17:阅读纹理内存之纹理引用API

1482
来自专栏数据结构与算法

LOJ #115. 无源汇有上下界可行流

#115. 无源汇有上下界可行流 描述 这是一道模板题。 n n n 个点,m m m 条边,每条边 e e e 有一个流量下界 lower(e) \text{...

3367
来自专栏云时之间

深度学习与神经网络:制作数据集,完成应用(1)

2154
来自专栏C语言及其他语言

【每日一题】1442[蓝桥杯][历届试题]打印十字图

继续给大家来一个蓝桥杯的真题,想练就能成大神! 请看题: 问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$...

2889
来自专栏尾尾部落

[剑指offer] 构建乘积数组

给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*....

1283
来自专栏云时之间

深度学习与神经网络:制作数据集,完成应用(1)

在这一篇文章里,我们将继续上一篇文章的工作,并且在上一篇文章的前提下加入数据集的制作,最终我们将完成这个全连接神经网络的小栗子.

8296

扫码关注云+社区

领取腾讯云代金券