2.2分解质因数(10分)

分解质因数(10分)

题目内容:

每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。

现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。

输入格式:

一个整数,范围在[2,100000]内。

输出格式:

形如:

n=axbxcxd

n=n

所有的符号之间都没有空格,x是小写字母x。

输入样例:

18

输出样例:

18=2x3x3

时间限制:500ms内存限制:32000kb

# include <stdio.h>
int is(int i) {
    int j;
    for ( j = 2; j < i; ++j ) {
        if ( i%j == 0)
        break;
    }
    if ( j != i)/*for循环里边,除数最大也是小于被除数,最后一个执行完,j++导致j=i,即除数本身是约数,即i是素数*/
    return 0;
    else
    return 1;
}
int main()
{
    int n,i;
    scanf("%d",&n);
    printf("%d=",n);
    if ( is(n))/*如果是素数,输出本身*/
    printf("%d\n",n);

    else
    {
        while ( n != 1 ){/*每循环一次,n会减小,最后一次除完,n为1*/
            for ( i = 2; i <= n; i++) {
                if (is(i) && n%i == 0){/*除数i是素数,且能被n整除*/
                    printf("%d",i);
                    if ( i != n)
                    printf("x");
                    else
                    printf("\n");
                    n /= i;
                    i = 1;/*i必须重新置为小于最小素数的值*/
                }
            }
        }

    }

    return 0;
}
时间: 2024-10-24 12:46:26

2.2分解质因数(10分)的相关文章

程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)

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

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

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

POJ 1091 跳蚤(分解质因数 + 容斥 + 大数)

跳蚤 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8910   Accepted: 2676 Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字.跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向

分解质因数

package java算法; /** * 任意整数分解 题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. * 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可. * (2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步. * (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步. * * @author to

java求最大公约数(分解质因数)

下面是四种用java语言编程实现的求最大公约数的方法: package gcd; import java.util.ArrayList; import java.util.List; public class gcd { public static void main(String[] args) { long startTime; long endTime; long durationTime; int[] testArray1 = new int[]{784, 988, 460, 732,

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

1 import java.util.*; 2 public class lianxi04{ 3 public static void main(String []a) { 4 Scanner s = new Scanner(System.in); 5 System.out.print( "请键入一个正整数:     "); 6 int n= s.nextInt(); 7 int k=2; 8 System.out.print(n + "=" ); 9 while(

[hdu4497]分解质因数

题意:求满足gcd(x,y,z)=G,lcm(x,y,z)=L的x,y,z的解的个数. 大致思路:首先如果L % G != 0那么无解,否则令u = L / G,问题变为,gcd(r,s,t)=1,lcm(r,s,t)=u的解的个数.然后将u分解质因数,令u=a1p1*...*akpk,考虑一种质因数ai,它不可能同时出现在r,s,t中,枚举所有情况:(1)只出现在r或s或t中,这3种情况答案都为1 (2)出现在r和s或r和t或s和t中,这3种情况答案都为2(pi-1)+1=2pi-1,所以对每

中国MOOC_零基础学Java语言_第7周 函数_1分解质因数

第7周编程题 查看帮助 返回 第7周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个[2,10000

大素数测试和分解质因数

Prime Test http://poj.org/problem?id=1811 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 typedef __int64 LL; 5 LL mulmod(LL a,LL b,LL c) { //ret=(a*b)%c 6 LL ret=0; 7 for(; b; a=(a<<1)%c,b>>=1) { 8 if(b&1) {