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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 神之梦   /  2013-7-7 15:02  /  10238 人查看  /  182 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package day06静态;
  2. import java.util.Scanner;


  3. public class Demo2 {
  4.         public static void main(String[] args) {
  5.                 Scanner sc = new Scanner(System.in);//用户键盘输入数字
  6.                 System.out.println("请输入你想分解的数字");
  7.                         int number = sc.nextInt();//控制台获得想分解的数字
  8.                         int z = 2;//2为最小质数
  9.                  if(number<z){
  10.                                 System.out.println("您输入的值有误,请输入<=2的正整数");
  11.                                 return;
  12.                  }
  13.                 while (number> z) {
  14.                     if (number % z== 0) {//但number能被k整除,则应打印出z的值
  15.                         System.out.print(z+"x");
  16.                         number = number / z;//并用number除以z的结果,作为新的数number,重复执行循环里的步骤
  17.                         }
  18.                     
  19.                     
  20.                     if (number % z != 0) {//(3)如果number不能被z整除,则用z+1作为k的值,重复执行循环里的步骤
  21.                         z++;
  22.                     }
  23.                 }
  24.                
  25.                 System.out.println(z);
  26.             }
  27.         }
  28.    
复制代码
考虑的不够全面,版主帮忙看下,如果有错误会继续改正的,下面的题争取严谨!

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 赞一个!

查看全部评分

回复 使用道具 举报
看看,学习学习
回复 使用道具 举报
给力啊,试试再说
回复 使用道具 举报
我想试试、、、、、、、阿门。

点评

阿门帮不了你滴,璐璐童鞋  发表于 2013-7-9 01:42
回复 使用道具 举报
{:2_34:}{:2_33:}
回复 使用道具 举报
第一题
  1. /*

  2. 1、键盘录入一个正整数,将其分解质因数。如:输入30,打印出30=2*3*5。

  3. */


  4. import java.util.*;
  5. public class Factors

  6. {

  7.         public static void main(String args[])

  8.         {

  9.                 int i;
  10.                 Scanner sc = new Scanner(System.in);
  11.                 int n=Integer.parseInt(sc.nextLine());        //实现从键盘输入一个正整数       
  12.                 System.out.print(n+"=");
  13.                

  14. for(i=2;i<n;i++) //分解质因数、从除1外最小的质数开始循环

  15.                 {

  16.                         while(n!=i) //如果这个质数恰等于n,则说明分解质因数的过程已经结束,        否则进行分解                       

  17.                         {

  18.                                 if(n%i==0) //取i余0说明i是一个因数、输出该质因数

  19.                                 {

  20.                                         System.out.print(i+"x");

  21.                                         n=n/i;//控制循环、操作与i相对的另一个因数是否是质数、不是质数即循环进行分解
  22.                                
  23. }
  24.                                
  25. else

  26.                                         break;
  27.                        
  28. }
  29.                
  30. }

  31.                 System.out.print(n); //输出使循环结束的质因数

  32.         }

  33. }
复制代码
运行截图


第三周1.jpg (4.49 KB, 下载次数: 0)

第三周1.jpg

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 很给力!

查看全部评分

回复 使用道具 举报
怎么设置
回复 使用道具 举报
import java.util.Scanner;
public class FenJie{
   public static void main(String[] args){
         System.out.println("请输入一个正整数:");
     Scanner sc = new Scanner(System.in);
     int n = sc.nextInt();
     int a=2;
     if(n<=1){//当n小于等于1的时候,数字不能分解。
       System.out.println("被分解数无效,请重新输入");
       return;
     }
     if(n==a){//当分解数为a时,分解的因数为1与他本身相乘。
       System.out.println(n+"="+"1*"+n);
     }
     if(n>a){//当n>a时,打印分解数n=;
       System.out.print(n+"=1");
       while(n>=a){
          if(n%a==0){
n=n/a;//当n%a余数为0,且n/a为它本身的时候打印出*和a的值
             System.out.print("*"+a);


           
          }
          else{
             a=a+1;//a+1的值赋值给a.
          }
       }
     }


      System.out.println("");
   }


}

点评

1不是质数,代码放在代码块即这个“<>”中,改下代码,再给你加分  发表于 2013-7-9 01:46
回复 使用道具 举报
瞅瞅……巩固知识
回复 使用道具 举报
王洪波 发表于 2013-7-8 12:30
这是改后的,请指教:

首先谢谢版主能够指出错误之处。
我改了下,如若再有错误,望不悋指出。
  1. package com.itheima.bbs.c5a3;

  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.Collections;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Random;

  9. /**
  10. * 2、求出1-100之间的素数,假设有n个,将这些素数存入a[n+1]的数组中。(其中n个是求出的各个素数,还有一个是随机添加其中的一个素数)
  11.       这样数组中就有相同的两个素数,写一个搜索算法,找出数组中相同的那个素数。(随机添加的素数,可手动指定,也可利用随机方法产生)
  12. */
  13. public class CopyOftest2
  14. {
  15.         public static void main(String[] args)
  16.         {       
  17.                 List<Integer> primes = new ArrayList<Integer>();
  18.                 primes.add(2);//2 为素数先加进去
  19.                 for(int i=3; i<=100; i+=2)
  20.                 {
  21.                         if(isPrime(i))
  22.                                 primes.add(i);
  23.                 }
  24.                 int size = primes.size();//原数组的大小
  25.                 Random random = new Random();
  26.                 //随机生成一个索引
  27.                 int index = random.nextInt(size);
  28.                 int s = primes.get(index);//额外添加的的素数
  29.                 System.out.println("额外添加的的相同素数"+s);
  30.                 //添加素数到随机位置
  31.                 int pos = random.nextInt(size);
  32.                 primes.add(pos, s);
  33.                 //输出结果
  34.                 printArray(primes);
  35.                 //找数组中相同的两个素数
  36.                 searchSame(primes);
  37.         }
  38.         /**
  39.          * 在集合list中查找元素i
  40.          */
  41.         private static void searchSame(List<Integer> list)
  42.         {       
  43.                 int index = -1;
  44.                 for(int i=1,size=list.size(); i<size; i++)
  45.                 {       
  46.                         //改动点:这里用二分查找相同元素,前面的元素可能是无序的,考虑不周.这里改成了用indexOf()去前边元素中找
  47.                         index = list.subList(0, i).indexOf(list.get(i));//从数组前边元素【0,i-1】中找
  48.                         if(-1 != index)//包含当前元素
  49.                         {
  50.                                 //找到了
  51.                                 System.out.println("位置"+i+"与位置"+index+"上的素数相同!都为:"+list.get(i));
  52.                                 return;
  53.                         }
  54.                 }
  55.                 System.out.println("没有找到相同元素!");
  56.         }
  57.         private static void printArray(List<Integer> primes)
  58.         {
  59.                 for(int i=1,size=primes.size(); i<=size; i++)
  60.                 {       
  61.                         //十个一行输出
  62.                                 System.out.print((i-1)+":"+primes.get(i-1)+" ");
  63.                                 if(i%10 == 0)
  64.                                         System.out.println();
  65.                 }
  66.                 System.out.println();
  67.         }

  68.         /**
  69.          * 判断i是否为素数
  70.          */
  71.         private static boolean isPrime(int i)
  72.         {       
  73.                 for(int j=2; j<i; j++)
  74.                 {
  75.                         if(i%j == 0)
  76.                                 return false;
  77.                 }
  78.                 return true;
  79.         }
  80. }
复制代码
回复 使用道具 举报
看看题~~~~~~~~~
回复 使用道具 举报
看看题~~~~~~~~~
回复 使用道具 举报
{:soso_e130:}{:soso_e130:}
回复 使用道具 举报
{:soso_e102:}{:soso_e102:}
回复 使用道具 举报
本帖最后由 咦,我盗了太阳 于 2013-7-9 15:11 编辑

好吧,我是第一次动脑子去想一个Java问题,虽然过程有点苦逼,没按要求用数组,但是我写出来了

继续努力咯

以后要经常参加这种活动才行啊
既锻炼了代码的灵活性也得到了分
嘿嘿
加油!
  1. /*打印输出一百以内的素数

  2. 1,遍历1-100的数,使用for循环进行遍历

  3. 2,判断这个数是不是素数,是就打印出来

  4. */

  5. class sushu
  6. {
  7. public static void main(String[] args)
  8. {
  9. //素数:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
  10. int j;
  11. for(int i=1;i<=100;i++)
  12. {
  13. for(j=2;j<=i-1;j++)
  14. {
  15. if(i%j==0)
  16. break;
  17. }
  18. if(j>=i-1&&i>1)
  19. {

  20. System.out.print(i+",");
  21. }
  22. }
  23. }
  24. }
复制代码
结果:

QQ截图20130708222818.png (1.25 KB, 下载次数: 0)

QQ截图20130708222818.png

点评

璐璐童鞋,你确定这是第一题?  发表于 2013-7-9 01:49

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
神之梦 + 1 + 6 淡定

查看全部评分

回复 使用道具 举报
本帖子需要验证码才可查看,请输入验证码:heima 即可正常访问  
回复 使用道具 举报
看看题目啊
回复 使用道具 举报
本帖最后由 一木榜公 于 2013-7-9 00:09 编辑
  1. /*
  2. 第1题: 键盘录入一个正整数,将其分解质因数。如:输入30,打印出30=2*3*5。

  3. 思路:
  4. 1.用哪个函数实现从键盘接收一个整数:Integer.parseInt(arg[0]);
  5. 2.怎么将其分解质因数?质因数就是质数因子,最小质数为2.任何合数都能分解成几个质数相乘
  6. 如:18 = 2 * 3 *3 ,36 = 2*2*3*3,105 = 3*5*7,

  7. 发现:
  8. 1,36如果被最小质数2除起,能被整除,商继续除2,直到不能被2整除,就2加1,再与3除,
  9. 能被整除,其商再与3除,以此类推……可求出质因子。
  10. 2,大于18的整数肯定不能与36整除,也就是不可能是他的质因子。
  11. */

  12. class  TestDemo
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                 // 接收键盘输入的正整数
  17.                 int x;      
  18.                 x = Integer.parseInt(args[0]);

  19.                  // 判断输入的是否为正整数
  20.                 if( x <= 0)
  21.                 {
  22.                         System.out.println("输入错误!所输入的数不是正整数。");
  23.                         return;
  24.                 }


  25.                 //记录x与质因数相除后的商
  26.                 int n = x;  
  27.                 int[] zishu = new int[32]; // 存放质因子数组
  28.                 int p = 0;      // 操作数组的角标
  29.                 for(int i = 2; i <= x/2; i++)
  30.                 {
  31.                         
  32.                         /*
  33.                         **  i能被n整除就将i输出,并求其商,直到i不能被n整除退出循环
  34.                         */
  35.                         while(n%i==0)
  36.                         {
  37.                                 zishu[p++] = i;
  38.                                 n = n/i;
  39.                         }
  40.                 }

  41.                 //判断是否有质因数,有打印质数因子
  42.                 if(n==x)
  43.                         System.out.println(x+"这个正整数不存在质因数!");
  44.                 else
  45.                 {
  46.                         //数组遍历
  47.                         System.out.print(x+"=");
  48.                         for(int j = 0; j < p; j++)
  49.                         {
  50.                                 if(j != p-1)
  51.                                 {
  52.                                         System.out.print(zishu[j]+"*");
  53.                                 }
  54.                                 else
  55.                                         System.out.println(zishu[j]);
  56.                         }
  57.                 }


  58.                         

  59.         }
  60. }
复制代码
编译结果:

点评

哥们,如果键盘录入还没学到,可以在程序中,用方法参数的方法传入一个值,你的这种勉强可以吧。不过结果7不是正整数这样的说法不好吧  发表于 2013-7-9 01:59

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
凑个热闹!!!
回复 使用道具 举报
貌似来的有点晚啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马