A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周一川 中级黑马   /  2013-3-31 20:12  /  1506 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  题目:将一个正整数分解质因数。例如:输入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-4-2 20:06

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
哥们 你拿着java经典习题50道挨个拿出来提问  累不累 要不你直接百度吧  那里有完整的答案

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
私密我....我给你分析一下....
  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

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
只简单的实现了下功能
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
王亚东 发表于 2013-3-31 20:57
只简单的实现了下功能

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

哦??50道么??能给我说一下,让我敲敲嘛?? :handshake
回复 使用道具 举报
邵震 高级黑马 2013-3-31 22:06:12
7#
胡帅冰 发表于 2013-3-31 21:55
哦??50道么??能给我说一下,让我敲敲嘛??

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

你去安卓十九期 技术分申请通道找到我的回复 你就会发现 好多好东西哦 我一共回复两次 每次都是好处大把大把的  真的对你有用就甩些金币吧  吼吼吼
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马