题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
题目来源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html
Python实现代码:
1 # -*- coding: -utf -*- 2 3 def Factorization(n): 4 k = 2; 5 L = [] 6 while k < n:#从小到大依次找出Number的质因数 7 if n%k == 0: 8 print(k) 9 n = n / k 10 continue 11 else: 12 k = k + 1 13 for i in range(1,k):#当k=n时,判断k是否为最大的一个质因数 14 if k%i == 0: 15 break 16 if i==k-1: 17 print(k) 18 19 if __name__ == ‘__main__‘: 20 Number = 90 21 Factorization(Number)
Java实现代码:
1 public class Factorization { 2 public void NumberFactorization(int Number) {//寻找Number所有质因数的方法 3 int k=2; 4 while(k<Number) { 5 if(Number%k == 0) { 6 Number = Number/k; 7 ShowPrime(k);//输出Number质因数的方法 8 continue; 9 } 10 k = k + 1; 11 } 12 if(IsPrimeNumber(k)) { 13 ShowPrime(k); 14 } 15 } 16 17 public boolean IsPrimeNumber(int k) {//判断最后的k是不是Number的最大质因数,结果返回boolean类型的值 18 for(int i=2;i<k;i++) { 19 if(k%i == 0) { 20 return false; 21 } 22 } 23 return true; 24 } 25 26 public void ShowPrime(int x) { 27 System.out.print(x+",");//踩坑,单引号括起来的为char字符类型,双引号括起来的才是字符串 28 } 29 30 static public void main(String args[]) {//主方法中新建类并调用方法因式分解Number 31 int Number = 90; 32 Factorization Fa = new Factorization(); 33 Fa.NumberFactorization(Number); 34 } 35 }
Java中这个单引号和双引号的坑已经是第二次踩了,容易和Python弄混淆
原文地址:https://www.cnblogs.com/xiang9286/p/9693802.html
时间: 2024-10-12 15:13:46