黑马程序员技术交流社区

标题: 请个位同学帮我分析分析者经典的题 [打印本页]

作者: 周一川    时间: 2013-3-31 20:12
标题: 请个位同学帮我分析分析者经典的题
  题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。  
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:  
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。  
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。  
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。  
作者: 邵震    时间: 2013-3-31 20:25
哥们 你拿着java经典习题50道挨个拿出来提问  累不累 要不你直接百度吧  那里有完整的答案
作者: 刘胜寒    时间: 2013-3-31 20:28
私密我....我给你分析一下....
  1. public class Main
  2. {        
  3.       
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner cin = new Scanner(System.in);
  7.                 while(cin.hasNext())
  8.                 {
  9.                         int n = cin.nextInt();
  10.                         ans(n);
  11.                 }
  12.         }
  13.         public static void ans(int a)
  14.         {
  15.                 String res="";//保存结果
  16.                 int[] Arr = new int[100000];
  17.                 if(a==1)
  18.                 {
  19.                         System.out.println(1);
  20.                 }
  21.                 else
  22.                 {
  23.                         int t = 2;
  24.                         int M = a;
  25.                         while(a!=1)
  26.                         {
  27.                           while(a%t==0)
  28.                           {
  29.                                   Arr[t]++;
  30.                                   a/=t;
  31.                           }
  32.                           t++;
  33.                         }
  34.                         for(int i=2;i<=t;i++)
  35.                         {
  36.                                 for(int j=0;j<Arr[i];j++)
  37.                                 {
  38.                                         res = res +'*'+i;
  39.                                 }
  40.                                        
  41.                         }
  42.                         res = res.substring(1, res.length());//结果第一个字符是‘*’要去掉
  43.                         System.out.println(res);
  44.                 }
  45.         }
  46. }
复制代码
http://bbs.itheima.com/thread-43374-10-1.html
150楼层....
在数论中有个定理每一个数都能其他素数相乘得到....当然如果本身是个素数只能被自己乘1得出了,比如3=3*1
作者: 王亚东    时间: 2013-3-31 20:57
只简单的实现了下功能
  1. public class T01_PrimeNumber {
  2.         public static void main(String[] args) {
  3.                 Scanner sc = new Scanner(System.in);
  4.                 String s = sc.next();
  5.                 int num = Integer.parseInt(s);
  6.                 int base = 2;
  7.                 do{
  8.                         if(num%base == 0){
  9.                                 System.out.println(base);
  10.                                 num = num/base;
  11.                         }else {
  12.                                 base++;
  13.                         }
  14.                 }while(base<num);
  15.                 System.out.println(base);
  16.         }
  17. }
复制代码

作者: 王亚东    时间: 2013-3-31 21:03
王亚东 发表于 2013-3-31 20:57
只简单的实现了下功能

最后一句那个System.out.println(base)应该是num
其实结果都一样
作者: 胡帅冰    时间: 2013-3-31 21:55
邵震 发表于 2013-3-31 20:25
哥们 你拿着java经典习题50道挨个拿出来提问  累不累 要不你直接百度吧  那里有完整的答案 ...

哦??50道么??能给我说一下,让我敲敲嘛?? :handshake
作者: 邵震    时间: 2013-3-31 22:06
胡帅冰 发表于 2013-3-31 21:55
哦??50道么??能给我说一下,让我敲敲嘛??

http://tao72909.blog.163.com/blog/static/24944291201261011205369/

你去安卓十九期 技术分申请通道找到我的回复 你就会发现 好多好东西哦 我一共回复两次 每次都是好处大把大把的  真的对你有用就甩些金币吧  吼吼吼




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2