同同的数学题——恼人的同同

问题 D: 桐桐的数学难题

  今天数学课上,桐桐学习了质数的知识:一个正整数如果只能被1和它本身整除,那么这个整数便是质数。桐桐就想:任意一个正整数是否都能分解成若干个质数相乘的形式呢?输入一个正整数n(2≤n≤109),把它分解成质因子相乘的形式,如果为质数则输出该数本身。如:36=2×2×3×3;19=19。你能帮助桐桐解决这个难题吗?

输入

输入一个正整数n(2≤n≤109)

输出

把它分解成质因子相乘的形式,如果为质数则输出该数本身,乘数从小到大输出。

样例输入

99

样例输出

99=3*3*11

提示


c++数学函数的预编译处理:#include<math.h>

package bluebriage;

import java.util.*;

public class Text{
	
	public static void main(String ages[]) {
        Scanner num=new Scanner(System.in);
        long n=num.nextLong(),i;
        System.out.print(n+"=");
        for(i=2;i<=n;i++){
          while(n!=i) {
        	  if(n%i==0) {
        		  System.out.print(i+"*");
        		  n/=i;
        	  }else {
        		  break;
        	  }
          }
	          if(Prime(n)) {//如果不加这个判断可能超时
	        	  System.out.println(n);
	        	  break;
	          }
         }
    }
	public static boolean Prime(long i) {
		if(i==1) {
			return false;
		}
		for(int j=2;j<=Math.sqrt(i);j++) {
		     if(i%j==0)  return false;
		}
		     return true;
	}
	
}

  当n为一个很大的素数的时候,我们就要条件判断nnnnnnnnnnnn次,但是,如果在循环判断玩后,我们立刻判断这个n是不是素数,是的话就立刻退出走下一步。

这也是看了一些大佬总结出来的结论才得知;感谢大佬们。

原文地址:https://www.cnblogs.com/RorinL/p/12494498.html