首页 > 其他分享 >AcWing 867. 分解质因数

AcWing 867. 分解质因数

时间:2023-08-21 23:02:04浏览次数:49  
标签:输出 正整数 每个 int 867 sqrt 质因数 AcWing

JWvFczgRNg.jpg

题目

给定 $n$ 个正整数 $a_i$,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。

输入格式 第一行包含整数 $n$。

接下来 $n$ 行,每行包含一个正整数 $a_i$。

输出格式 对于每个正整数 $a_i$,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。

每个正整数的质因数全部输出完毕后,输出一个空行。

数据范围 $1≤n≤100,2≤a_i≤2×10^9$ 输入样例:

2
6
8

输出样例:

2 1
3 1

2 3

思路

质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。

对于一个正整数而言,大于 $sqrt(n)$ 仅能有一个,所以我们可以遍历 $2-sqrt(n)$,每个数值除尽 $n$,此时当前数值就是一个质因数。 循环结束后,若 $n > 1$ 则证明最后一个质因数是 $n$

本题本质还是试除法,不过时间复杂度不再固定,时间复杂度 $O(logn)-O(sqrt(n))$

代码

#include <iostream>

using namespace std;

int n;

int main()
{
    cin >> n;
    
    while (n -- )
    {
        int a;
        cin >> a;
        for (int i = 2; i <= a / i; i ++ )
        {
            if (a % i == 0)
            {
                int s = 0;
                while (a % i == 0) a /= i, s ++ ;
                
                cout << i << " " << s << endl;
            }
        }
        if (a > 1) cout << a << " " << 1 << endl;
        cout << endl;
    }
    
    return 0;
}

标签:输出,正整数,每个,int,867,sqrt,质因数,AcWing
From: https://blog.51cto.com/u_16170343/7180633

相关文章

  • AcWing 866. 试除法判定质数
    题目给定$n$个正整数$a_i$,判定每个数是否是质数。输入格式第一行包含整数$n$。接下来$n$行,每行包含一个正整数$a_i$。输出格式共$n$行,其中第$i$行输出第$i$个正整数$a_i$是否为质数,是则输出Yes,否则输出No。数据范围$1≤n≤100,1≤a_i≤2^{31}−1$......
  • Acwing 第117场周赛
    Acwing第117场周赛这次的题比较简单,但是在做第二题的时候有地方一开始没有想到,导致想的比较简单,提交错了两次,下次要彻底思考清楚再提交A题题意:给定一个正整数n,请你计算一共有多少个正整数数对(a,b)同时满足:a>ba+b=n输入格式第一行包含整数T,表示共有T组测试数据。每......
  • AcWing 861. 二分图的最大匹配
    题目给定一个二分图,其中左半部包含$n_1$个点(编号$1∼n_1$),右半部包含$n_2$个点(编号$1∼n_2$),二分图共包含$m$条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图$G$,在$G$的一个子图$M$中,$M$的边集......
  • Acwing 197 阶乘分解
    我觉得都不用过多解释,看代码就懂了#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6+10;intread(){ intx=0; chars=getchar(); while(s<'0'||s>'9') { s=getchar(); } while(s>='0'&&......
  • AcWing 860. 染色法判定二分图
    题目给定一个$n$个点$m$条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数$n$和$m$。接下来$m$行,每行包含两个整数$u$和$v$,表示点$u$和点$v$之间存在一条边。输出格式如果给定图是二分图,则输出Yes,否则输出No......
  • AcWing 858. Prim算法求最小生成树
    题目给定一个$n$个点$m$条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图$G=(V,E)$,其中$V$表示图中点的集合,$E$表示图中边的集合,$n=|V|,m=|E|$。由$V$中的全部$n$个......
  • AcWing 854. Floyd求最短路
    题目给定一个$n$个点$m$条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定$k$个询问,每个询问包含两个整数$x$和$y$,表示查询从点$x$到点$y$的最短距离,如果路径不存在,则输出impossible。数据保证图中不存在负权回路。输入格式第一行包含三个整数$n,m,k......
  • AcWing 852. spfa判断负环
    题目给定一个$n$个点$m$条边的有向图,图中可能存在重边和自环,边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数$n$和$m$。接下来$m$行每行包含三个整数$x,y,z$,表示存在一条从点$x$到点$y$的有向边,边长为$z$。输出格式如果图中存在负......
  • Acwing第116场周赛
    Acwing.第116场周赛这次做的稍微通畅一点,但是做到第三题还是发懒了,以后每次周赛打完都会有一个周赛总结第一题:简单判断给定三个非负整数x,y,z,请根据如下要求进行判断并输出结果:如果x>y+z,输出+;如果y>x+z,输出-;如果x=y并且z=0,则输出0;如果以上都不满足,则输出?......
  • AcWing116
    AcWing116AAcWing5134.简单判断voidsolve(){intx,y,z;cin>>x>>y>>z;if(x>y+z)cout<<'+'<<endl;elseif(y>x+z)cout<<'-'<<endl;elseif(x==......