icewing

正整数分解质因数
Description还记得什么是质因数吗?质因数就是一个数的约数(b能整除a,b称为a的约数),并且是质数(又称...
扫描右侧二维码阅读全文
22
2018/11

正整数分解质因数

Description

还记得什么是质因数吗?

质因数就是一个数的约数(b能整除a,b称为a的约数),并且是质数(又称素数)。

比如8=2×2×22就是8的质因数;

12=2×2×323就是12的质因数。

把一个式子以12=2×2×3的形式表示,叫做分解质因数。

分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:

  1. 如果这个质数恰等于n,则说明分解质因数的过程已经结束,输出即可。
  2. 如果n > i,但n能被i整除,则应打印出i的值,并用n除以i的商作为新的正整数,重复执行第一步。
  3. 如果n不能被i整除,则用i+1作为i的值,重复执行第一步。

Input

输入示例:

10

50

90

Output

(输出请严格对照输出示例格式,不要包含空格等无关字符)输出示例:

2*5

2*5*5

2*3*3*5

Java解决方法

import java.util.Scanner;

public class Main {
    public static void solve1(int n) {
        for (int i = 2; i <= n; i++) {
            if (i == n) {
                System.out.print(i);
            }
            if (n > i && (n % i == 0)) {
                System.out.print(i + "*");
                solve1(n / i);
                break;
            }
        }
    }
    public static void main(String[] args)
    {
            Scanner sc = new Scanner(System.in);

            solve1(sc.nextInt());

    }
}

Python解决方法

n=int(input())
m=n
def func(n):
    for i in range(2,n+1):
        if (n%i==0):
            print(i,end='')
            n/=i
            if n!=1:
                print('*',end='')
                return func(int(n))
func(m)

其他

最后修改:2018 年 11 月 24 日 12 : 56 PM
生活需要一些仪式感,比如手冲一杯咖啡:)

10 条评论

  1. 路痴

    现在好了点

  2. 路痴
    #include<stdio.h>
    int main()
    {
        int i,m,a;
        while((scanf("%d",&m))!=EOF)
        {
            a = m;
            for(i = 2;i < m;i++)
            {
                while(a % i == 0)
                {
                    if(a > i)
                    printf("%d*",i);
                    else
                    printf("%d",i);
                    a /= i;
                }
            }
            
        }
        return 0;
    }
    1. icewing
      @路痴

      PICK!

      1. 路痴
        @icewing

        要向大佬学习୧(๑•̀⌄•́๑)૭

        1. icewing
          @路痴

          算不上大佬,一起学习!

      2. 路痴
        @icewing

        初学者,写的不好

        1. icewing
          @路痴

          我刚看到您评论了很多。但是页面没有显示。是哪里出错了吗?

          1. 路痴
            @icewing

            手机上说网络不好(╥ω╥`)

            1. icewing
              @路痴

              感觉很可能是我博客的问题。之前也有人反映评论不上。我去排查一下。

              1. 路痴
                @icewing

                我现在连评论都发不出去

发表评论