SDNU 1427.分解质因数(水题)

Description

问题描述   求出区间[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

Input

Output

Sample Input

Sample Output

思路:明明就是一道水题,debug却让我吐血!一开始我用vector来存数据,但是爆了,也不知道为什么会爆,我明明开了很大的数。后来只能用简化的办法了。

#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
using namespace std;
#define ll long long
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;

int a, b, tot, pri[10000+8], en[10000+8];
bool is[10000+8];

void E()
{
    tot = 0;
    memset(is, 1, sizeof(is));
    is[0] = is[1] = 0;
    for(int i = 2; i<10000+8; i++)
    {
        if(is[i])
        {
            pri[tot++] = i;
            for(int j = i+i; j<10000+8; j += i)
                is[j] = 0;
        }
    }
}

int main()
{
    E();
    while(~scanf("%d%d", &a, &b))
    {
        for(int i = a; i <= b; i++)
        {
            int id = 0, buffer = i;
            for(int j = 0; j < tot && pri[j]*pri[j] <= i; j++)
            {
                if(buffer%pri[j] == 0)
                {
                    while(buffer%pri[j] == 0)
                    {
                        en[id++] = pri[j];
                        buffer /= pri[j];
                    }
                }
            }
            if(buffer>1)en[id++] = buffer;
            printf("%d=", i);
            bool flag = 0;
            for(int j = 0; j<id; j++)
            {
                if(flag)printf("*");
                flag = 1;
                printf("%d", en[j]);
            }
            printf("\n");
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/RootVount/p/11252860.html

时间: 2024-10-19 15:08:10

SDNU 1427.分解质因数(水题)的相关文章

SDNU 1467.杨辉三角形(水题)

Description 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数. 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加. 下面给出了杨辉三角形的前4行: 1 1  1 1  2  1 1  3  3  1 给出n,输出它的前n行. Input 输入格式 输入包含一个数n. Output 输出杨辉三角形的前n行.每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔.请不要在前面输出多余的空格. Sample Input 4 Sample Outp

SDNU 1093.DNA排序(水题)

Description 逆序数可以用来是描述一个序列混乱成度的量.例如,“DAABEC”的逆序数为5,其中D大于它右边的4个数,E大于它右边的1个数,4+1=5:又例如“ZWQM”的逆序数为3+2+1+0=6. 现在有许多长度一样的字符串,每个字符串里面只会出现四种字母(A,T,G,C).你现在被要求编写程序将这些字符串按照他们的逆序数进行排序 Input 第一行包括两个正整数,第一个正整数N给出了字符串的长度,第二个正整数M给出了字符串的数量.(1<=N,M<=100) 接下来M行每行一个长

[Codeforces 1246B] Power Products (STL+分解质因数)

[Codeforces 1246B] Power Products (STL+分解质因数) 题面 给出一个长度为\(n\)的序列\(a_i\)和常数k,求有多少个数对\((i,j)\)满足\(a_i \times a_j = x^k (x \in \mathbb{N}^+)\).即这两个数乘起来恰好为一个正整数的\(k\)次方 \(a_i,n \leq 10^5\) 分析 考虑\(x^k\)的质因数分解式 , 那么每一项的指数一定是k的倍数,即 \(k|x_i\). 因此对于每个 \(a_i\)

java编程题 --分解质因数

package Solve; import java.util.Scanner; public class Solve { static Scanner scan = new Scanner(System.in); public static void main(String[] args) { System.out.println("请输入一个正整数:"); int num = scan.nextInt(); System.out.print(num + " = "

分解质因数 翁恺老师C语言程序设计CAP第5章编程题

题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式:当读到的就是素数时,输出它本身. 输入格式: 一个整数,范围在[2,100000]内. 输出格式: 形如: n=axbxcxd 或 n=n 所有的符号之间都没有空格,x是小写字母x. 输入样例: 18 输出样例: 18=2x3x3 时间限制

poj3421 X-factor Chains——分解质因数

题目:http://poj.org/problem?id=3421 好久没有独立A题了...做点水题还是有助于提升自信心的: 这题就是把 x 质因数分解,质因数指数的和 sum 就是最长的长度,因为每次至少乘一个质因数: 排列方式就是从 sum 个位置里给第一种质因数选几个位置,再在剩下的里面给第二种质因数选几个位置... 也就是 ans = ∏(1<=i<=cnt) C(n,pc[i]),n -= pc[i],其中 cnt 是质因数(种类)个数,pc 是每种质因数的指数,n 就是目前剩下几个

HDU-1164-Eddy&#39;s research I (分解质因数)

由于这道题目数据范围小,所以属于水题.可以采取暴力的做法来解决. 代码如下: #include"bits/stdc++.h" using namespace std; const int maxn=65535; bool tag[maxn+5]; vector<int>v;int n; bool judge(int m){ while(n%m==0){ if(n==m){ printf("%d\n",m); return true; } else pri

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive

【CodeM初赛】T4 分解质因数+暴力

题目描述树链是指树里的一条路径.美团外卖的形象代言人袋鼠先生最近在研究一个特殊的最长树链问题.现在树中的每个点都有一个正整数值,他想在树中找出最长的树链,使得这条树链上所有对应点的值的最大公约数大于1.请求出这条树链的长度. 输入描述:第1行:整数n(1 ≤ n ≤ 100000),表示点的个数.第2~n行:每行两个整数x,y表示xy之间有边,数据保证给出的是一棵树.第n+1行:n个整数,依次表示点1~n对应的权值(1 ≤ 权值 ≤ 1,000,000,000). 输出描述:满足最长路径的长度