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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

一木榜公 发表于 2013-7-9 20:40
2、求出1-100之间的素数,假设有n个,将这些素数存入a[n+1]的数组中。
(其中n个是求出的各个素数,还有一 ...

白天看视频,晚上做题所以有点赶……呵呵
回复 使用道具 举报
回复看题,回复才能看到题。
回复 使用道具 举报
本帖最后由 杨彬 于 2013-7-10 12:13 编辑

第三题代码如下
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.util.ArrayList;
  9. import java.util.List;/*
  10. *  在一个文件夹内有文件夹和文件,文件名的格式为:数字+名称.java。
  11. 要求:把所有的.java文件复制一份,变为文件名格式为:数字+名称+数字.java。
  12. (其中数字是相对应的,名称由字母组成。如:01Demo.java——>01Demo01.java)
  13. * */
  14. public class Test7 { public static void main(String[] args) {
  15.   File oldFileDir = new File("F:\\aaa"); // 源文件文件夹对象
  16.   File newFileDir = new File("F:\\ccc"); // 目标文件夹对象 //所有文件名称路径
  17.   List<File> javaFileList = new ArrayList<File>();
  18.   getFiles(oldFileDir, javaFileList);
  19.   
  20.   //所有新文件名称路径
  21.   List<File> listNewName=new ArrayList<File>();
  22.   nameSplit(javaFileList, listNewName, newFileDir);
  23.   
  24. //  for(int i=0;i<listNewName.size();i++)
  25. //   System.out.println(listNewName.get(i)+"****"+ javaFileList.get(i));
  26.   //复制文件
  27.   copyFileList(javaFileList, listNewName);
  28. }
  29. //复制多个文件
  30. private static void copyFileList(List<File> oldFileList,
  31.    List<File> newFileList) {
  32.   for(int i =0; i< oldFileList.size(); i++){
  33.    //调用复制文件方法
  34.    copyFile(oldFileList.get(i), newFileList.get(i));
  35.   }
  36. }
  37. //复制单个文件
  38. private static void copyFile(File oldFile, File newFile) {
  39.   BufferedReader bufr =null;
  40.   BufferedWriter bufw =null;
  41.   try {
  42.    //因为我要复制的文件编码为本地编码(GBK),防止乱码
  43.    bufr =new BufferedReader(new InputStreamReader(new FileInputStream(oldFile), "GBK"));
  44.    bufw =new BufferedWriter(new FileWriter(newFile));
  45.    
  46.    String line =null;
  47.    while((line =bufr.readLine()) !=null){
  48.     bufw.write(line);
  49.     bufw.newLine();
  50.     bufw.flush();
  51.    }
  52.   } catch (Exception e) {
  53.    System.out.println(e.toString());
  54.   } finally{
  55.    try{
  56.     if(bufr !=null)
  57.      bufr.close();
  58.    }catch(IOException e){
  59.     System.out.println(e.toString());
  60.    }
  61.    
  62.    try{
  63.     if(bufw !=null)
  64.      bufw.close();
  65.    }catch(IOException e){
  66.     System.out.println(e.toString());
  67.    }
  68.   }
  69.   
  70. }
  71. //获取新生成文件路径名称
  72. private static void nameSplit(List<File> files,List<File> listNewName, File newFileDir) {
  73.   String ss=null;
  74.   for (int i = 0; i < files.size(); i++) {
  75.    String s = files.get(i).getName();
  76.    char[] arr = s.toCharArray();
  77.    int index = 0;
  78.    for (int j = 0; j < arr.length; j++) {
  79.     //判断英文字母位置角标
  80.     if (arr[j] >= 'a' && arr[j] <= 'z' || arr[j] >= 'A'
  81.       && arr[j] <= 'Z') {
  82.      index = j;
  83.      break;
  84.     }
  85.    }
  86.    //截取.java前的文件名称
  87.    String[] arrs = s.split("\\.");
  88.    //拼接字符串生成新文件名称
  89.    ss=arrs[0]+s.substring(0, index)+"."+arrs[1];
  90.    //装成File对象,添加到新名称集合中封
  91.    listNewName.add(new File(newFileDir, ss));
  92.   }
  93. } //该方法用来获取所有文件夹下所有的文件
  94. private static void getFiles(File oldFileDir, List<File> javaFileList) {   File[] fileDirs = oldFileDir.listFiles();
  95.   for (int i = 0; i < fileDirs.length; i++) {
  96.    //如果是目录递归调用该方法获取所有文件
  97.    if (fileDirs[i].isDirectory()) {
  98.     getFiles(fileDirs[i], javaFileList);
  99.    } else {
  100.     //判断文件是否以.java结尾
  101.     if(fileDirs[i].getName().endsWith(".java"))
  102.      javaFileList.add(fileDirs[i]);
  103.    }
  104.   }
  105. }
复制代码
运行结果如图

文件地址截图.png (30.29 KB, 下载次数: 0)

复制文件前的目录

复制文件前的目录

文件子目录名.png (21.21 KB, 下载次数: 0)

复制文件前的子目录

复制文件前的子目录

复制文件地址.png (20.89 KB, 下载次数: 0)

复制后目录

复制后目录

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 结尾是不是少复制了个},很给力.

查看全部评分

回复 使用道具 举报
  1. <div class="blockcode"><blockquote><p>第三题:</p><p>package test;
  2. /*
  3. 3、在一个文件夹内有文件夹和文件,文件名的格式为:数字+名称.java。
  4. 要求:把所有的.java文件复制一份,变为文件名格式为:数字+名称+数字.java。
  5. (其中数字是相对应的,名称由字母组成。如:01Demo.java——>01Demo01.java)
  6. */
  7. import java.io.BufferedReader;
  8. import java.io.BufferedWriter;
  9. import java.io.File;
  10. import java.io.FileInputStream;
  11. import java.io.FileNotFoundException;
  12. import java.io.FileReader;
  13. import java.io.FileWriter;
  14. import java.io.IOException;
  15. import java.io.InputStreamReader;
  16. import java.io.UnsupportedEncodingException;
  17. import java.util.ArrayList;
  18. import java.util.List;

  19. public class Test_three {

  20.         public static void main(String[] args) {
  21.                 File file =new File("C:\\test1");
  22.                 File file1 =new File("C:\\testCopy");

  23.                 String fileName ="(0\\d+)(Demo)(\\.java)";
  24.                 List<File> lists =new ArrayList<File>();
  25.                
  26.                 //递归生成
  27.                 getLists(file,lists,fileName);
  28.                
  29.                 for(File files: lists){
  30.                         String newFileName = files.getName().replaceAll(fileName, "$1$2$1$3");
  31.                         File dJavaFile =new File(file1, newFileName);
  32.                         System.out.println("原文件名为:"+files.toString()+"-----新文件名:"+ dJavaFile);
  33.                         copyFile(files, dJavaFile);
  34.                 }
  35.         }
  36.        
  37.         //递归生成
  38.         private static void getLists(File file,
  39.                         List<File> FileList, String fileName) {
  40.                 File[] files =file.listFiles();

  41.                
  42.                 for(int x =0; x <files.length; x++){
  43.                         if(files[x].isDirectory())
  44.                                 getLists(files[x], FileList, fileName);
  45.                         else{
  46.                                 String oldName =files[x].getName();
  47.                                
  48.                                 if(oldName.matches(fileName)){
  49.                                        
  50.                                         FileList.add(files[x]);
  51.                                 }
  52.                         }
  53.                 }
  54.                
  55.         }
  56.         private static void copyFile(File sourceFile, File dJavaFile) {
  57.                 BufferedReader bufr =null;
  58.                 BufferedWriter bufw =null;
  59.                 try {
  60.                         bufr =new BufferedReader(new FileReader(sourceFile));
  61.                 } catch (FileNotFoundException e) {
  62.                         // TODO Auto-generated catch block
  63.                         e.printStackTrace();
  64.                 }
  65.                
  66.                 try {
  67.                         bufw =new BufferedWriter(new FileWriter(dJavaFile));
  68.                 } catch (IOException e) {
  69.                         // TODO Auto-generated catch block
  70.                         e.printStackTrace();
  71.                 }
  72.                
  73.                 String count =null;
  74.                 System.out.println(sourceFile);
  75.                 try {
  76.                         while((count =bufr.readLine()) !=null){
  77.                                 bufw.write(count);
  78.                                 bufw.newLine();
  79.                                 bufw.flush();
  80.                         }
  81.                 } catch (IOException e) {
  82.                         // TODO Auto-generated catch block
  83.                         e.printStackTrace();
  84.                 }
  85.         }

  86. }
  87. </p>
复制代码
第一题:
package test;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test_one {

        public static void main(String[] args) {
                Scanner in=new Scanner(System.in);
                System.out.println("请输入一个正整数:");
                int number=in.nextInt();
               
                List<Integer> primes =new ArrayList<Integer>();
                for(int i=2; i<=number; i++){
                        //如果是质数并且能被传入的整数number整除  那么  这个数i一定是number的一个质因数
                        if(isPrime(i)&&(number%i ==0))
                                primes.add(i);
                }
               
        List<Integer> pDetails =new ArrayList<Integer>();
               
                for(int x =0; x <primes.size(); x++){
                        int pCount =0;
                        int f =primes.get(x);
                        int munTemp =number;
                        while(munTemp%f ==0){
                                pCount++;
                                munTemp =munTemp/f;
                        }
                        pDetails.add(pCount);
                }
               
                //分解结果
                StringBuilder sBuilder =new StringBuilder();
                sBuilder.append(number+"=");
               
                int primeFactor =0;
                int pCount =0;
               
                for(int i =0; i<primes.size(); i++){
                        primeFactor =primes.get(i);
                        pCount =pDetails.get(i);
                       
                        for(int j =0; j<pCount -1; j++)
                                sBuilder.append(primeFactor+"*");
                       
                        if(i <pDetails.size()-1)
                                sBuilder.append(primeFactor+"*");
                        else
                                sBuilder.append(primeFactor);
                }
               
                System.out.println("质因数分解结果:"+ sBuilder.toString());
        }

        // 判断素数
        private static boolean isPrime(int num) {
                boolean flag = true;

                for (int i = 2; i < num; i++) {
                        if (num % i == 0) {
                                flag = false;
                                break;
                        }
                        flag = true;
                }
                return flag;
        }
}
  1. <p>第二题:</p><p>package test;

  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.List;
  5. import java.util.Random;
  6. import java.util.Set;

  7. public class Test_two {

  8.         public static void main(String[] args) {
  9.                 int sum = 100;
  10.                
  11.                 List<Integer> primes = new ArrayList<Integer>();
  12.                 for (int i = 2; i <= 100; i++) {
  13.                         if(isPrime(i))
  14.                                 primes.add(i);
  15.                 }
  16.                 System.out.println(primes);
  17.                
  18.                
  19.                 //将重复数字插入指定位置
  20.                         int[] primeArr =new int[primes.size() +1];
  21.                         for(int i=0; i <primes.size(); i++){
  22.                                 primeArr[i] =primes.get(i);
  23.                         }
  24.                         int randomPrime =primeArr[new Random().nextInt(primes.size())];
  25.                         int randomIndex =new Random().nextInt(primes.size());
  26.                      
  27.                         for(int x= primeArr.length-2; x>= randomIndex; x--){
  28.                                 primeArr[x+1] =primeArr[x];
  29.                         }
  30.                         primeArr[randomIndex] =randomPrime;
  31.                        
  32.                        
  33.                         int repeatedPrime =checkRepeat(primeArr);
  34.                        
  35.                         System.out.println("重复的数字是:"+ repeatedPrime);
  36.         }

  37.         //判断素数
  38.         private static boolean isPrime(int num) {
  39.                 boolean flag = true;

  40.                 for (int i = 2; i < num; i++) {
  41.                         if (num % i == 0) {
  42.                                 flag = false;
  43.                                 break;
  44.                         }
  45.                         flag = true;
  46.                 }
  47.                 return flag;
  48.         }
  49.        
  50.         //检测重复加入的数字
  51.                 private static int checkRepeat(int[] primesArr) {
  52.                         Set<Integer> assistSet =new HashSet<Integer>();
  53.                         int repeatedNum =0;
  54.                         for(int element: primesArr){
  55.                                 boolean flag =assistSet.add(element);
  56.                                 if(flag)
  57.                                         System.out.print(element+" ");
  58.                                 else{
  59.                                         System.out.println("  ..."+ element+"重复...");
  60.                                         repeatedNum =element;
  61.                                         break;
  62.                                 }
  63.                         }
  64.                         return repeatedNum;
  65.                 }

  66. }
  67. </p>
复制代码
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1技术分 +5 收起 理由
神之梦 + 5

查看全部评分

回复 使用道具 举报
看看  看看看看看看看看看看看看
回复 使用道具 举报
做完入学考试来看看
回复 使用道具 举报
看看 练习下
回复 使用道具 举报
本帖最后由 liguangcaiup 于 2013-7-11 09:53 编辑

第一题
  1. public class test1 {

  2.         // 1、键盘录入一个正整数,将其分解质因数。如:输入30,打印出30=2*3*5。
  3.         public static void main(String[] args) throws Exception {
  4.                 // 接受一个正整数
  5.                 Scanner in = new Scanner(System.in);
  6.                 int num = in.nextInt();

  7.                 if (isPrime(num)) { // 若num是素数直接输出结果
  8.                         System.out.println(num + "=" + 1 + "*" + num);
  9.                         return;
  10.                 }
  11.                 System.out.print(num + "=");
  12.                 for (int i = 2; i <= num; i++) {
  13.                         if (isPrime(i)) { // 是素数时继续
  14.                                 if (0 == num % i) {
  15.                                         while (true) { // 此循环处理连续质因数问题
  16.                                                 System.out.print(i);
  17.                                                 num /= i;
  18.                                                 if (num != 1)
  19.                                                         System.out.print("*");
  20.                                                 if (num % i != 0) // 若不能被i整除 是否有连续的质因数如:4=2*2
  21.                                                         break;
  22.                                         }
  23.                                 }
  24.                         }
  25.                 }
  26.         }

  27.         public static boolean isPrime(int num) { // 判断是否素数
  28.                 if (1 == num)
  29.                         return false;
  30.                 if (2 == num)
  31.                         return true;
  32.                 double n = Math.sqrt(num);
  33.                 for (int i = 2; i <= n; i++) {
  34.                         if (0 == num % i)
  35.                                 return false;
  36.                 }
  37.                 return true;
  38.         }
  39. }
复制代码
运行结果:
1000
1000=2*2*2*5*5*5
30
30=2*3*5

第二题:
  1. import java.util.ArrayList;
  2. import java.util.Random;

  3. public class test2 {

  4.         /*
  5.          * 求出1-100之间的素数,假设有n个,将这些素数存入a[n+1]的数组中。(其中n个是求出的各个素数,还有一个是随机添加其中的一个素数)
  6.          * 这样数组中就有相同的两个素数,写一个搜索算法,找出数组中相同的那个素数。(随机添加的素数,可手动指定,也可利用随机方法产生)
  7.          * (注:存入数组后,数组中的所有元素理论上是无序的,相同的那个素数不一定就等于a[n],而是被存入了数组中的某个角标上)
  8.          */
  9.         public static void main(String[] args) {
  10.                 ArrayList<Integer> arrayList = new ArrayList<Integer>();
  11.                 Random r = new Random();
  12.                 for (int i = 1; i <= 100; i++) { // 记录100以内的素数
  13.                         if (isPrime(i))
  14.                                 arrayList.add(i);
  15.                 }
  16.                
  17.                 //输出arrayList 中记录的素数
  18.                 System.out.println("arrayList 中记录的素数::");
  19.                 for (int i = 0,flag=0; i < arrayList.size(); i++) {
  20.                         System.out.print(arrayList.get(i)+"  ");
  21.                         flag++;
  22.                         if(flag==10){
  23.                                 System.out.println();
  24.                                 flag=0;
  25.                         }
  26.                 }
  27.                
  28.                 // 把记录无序的存入数组中
  29.                 int length = arrayList.size();
  30.                 int[] nums = new int[length+1];
  31.                 int n,index;
  32.                 for (int i = 0; i < length; i++) {
  33.                         n = arrayList.size();        
  34.                         if(0==n)        //数据已经全部随机加入int[]
  35.                                 break;
  36.                         index = r.nextInt(n);
  37.                         nums[i] = arrayList.get(index);
  38.                         arrayList.remove(index);

  39.                 }
  40.                 //产生一个随机素数,并加入最后位置
  41.                 int randomNum = r.nextInt(length);
  42.                 nums[length] = nums[randomNum];
  43.                
  44.                 //输出"无序存入int[],并加入最后一个随机素数后的数据
  45.                 System.out.println();
  46.                 System.out.println("无序存入int[],并加入最后一个素数后的数据::");
  47.                 for (int i = 0,flag=0; i <length+1; i++) {
  48.                         System.out.print(nums[i]+"  ");
  49.                         flag++;
  50.                         if(flag==10){
  51.                                 System.out.println();
  52.                                 flag=0;
  53.                         }
  54.                 }
  55.                
  56.                 //找出与最后一个素数相同的元素下标
  57.                 for (int i = 0; i < length; i++) {
  58.                         if(nums[length]==nums[i]){
  59.                                 System.out.println();
  60.                                 System.out.println("与最后一个素数位置相同的元素下标::"+i);
  61.                         }
  62.                                 
  63.                 }
  64.         }

  65.         public static boolean isPrime(int num) { // 判断是否素数
  66.                 if (1 == num)
  67.                         return false;
  68.                 if (2 == num)
  69.                         return true;
  70.                 double n = Math.sqrt(num);
  71.                 for (int i = 2; i <= n; i++) {
  72.                         if (0 == num % i)
  73.                                 return false;
  74.                 }
  75.                 return true;
  76.         }
  77. }
复制代码
运行结果:
arrayList 中记录的素数::
2  3  5  7  11  13  17  19  23  29  
31  37  41  43  47  53  59  61  67  71  
73  79  83  89  97  
无序存入int[],并加入最后一个随机素数后的数据::
11  37  3  2  23  31  7  61  79  13  
89  17  73  19  71  53  67  59  41  5  
97  83  29  43  47  31  
与最后一个素数位置相同的元素下标::5

第三题:

复制代码
  1. package test;

  2. import java.io.*;
  3. import java.util.ArrayList;


  4. public class test3 {

  5.         /*
  6.          * 3、在一个文件夹内有文件夹和文件,文件名的格式为:数字+名称.java。
  7.          * 要求:把所有的.java文件复制一份,变为文件名格式为:数字+名称+数字.java。
  8.          * (其中数字是相对应的,名称由字母组成。如:01Demo.java——>01Demo01.java)
  9.          */
  10.         public static void main(String[] args) throws IOException {
  11.                 File file = new File("f://day24");
  12.                 File file2 = new File("e:");
  13.                 copyDir(file, file2);
  14.         }

  15.         // 复制文件夹
  16.         static void copyDir(File srcDir, File desDir) throws IOException {
  17.                 File dir = new File(desDir, srcDir.getName()); // 先创建文件夹
  18.                 System.out.println(dir + "   复制结果::" + dir.mkdir());        //输出文件夹拷贝成功与否
  19.                 File[] files = srcDir.listFiles();
  20.                 for (int i = 0; i < files.length; i++) {
  21.                         if (files[i].isDirectory())                //如果是文件夹递归调用copyDir
  22.                                 copyDir(files[i], dir);
  23.                         else {
  24.                                 if (files[i].getName().endsWith(".java")) {        //如果是.java文件调用copyFile
  25.                                         File tfile = new File(dir,setFileName(files[i].getName()));
  26.                                         copyFile(files[i], tfile);
  27.                                 }
  28.                         }
  29.                 }
  30.         }
  31.         //处理文件名 01Demo.java——>01Demo01.java
  32.         public static String setFileName(String oldName){
  33.                 ArrayList<Character> num = new ArrayList<Character>();
  34.                 String[] str = oldName.split("\\.");
  35.                 char[] name = str[0].toCharArray();
  36.                 for (int i = 0; i < name.length; i++) {                //得到名字中的前导数字
  37.                         if(name[i]>='0'&&name[i]<='9')
  38.                                 num.add(name[i]);
  39.                         else
  40.                                 break;
  41.                 }
  42.                 String strNum="";
  43.                 for(char ch: num)                        //前导数字存入strNum
  44.                         strNum+=ch;
  45.                 return str[0]+strNum+".java";
  46.         }
  47.        
  48.         // 复制文件
  49.         static void copyFile(File srcFile, File desFile) throws IOException {
  50.                 BufferedInputStream bufis = null;       
  51.                 BufferedOutputStream bufos = null;
  52.                 try {
  53.                         //文件复制用到的流
  54.                         bufis = new BufferedInputStream(new FileInputStream(srcFile));               
  55.                         bufos = new BufferedOutputStream(new FileOutputStream(desFile));
  56.                         byte[] buf = new byte[1024 * 4];       
  57.                         int len;
  58.                         //复制文件
  59.                         while ((len = bufis.read(buf)) != -1) {
  60.                                 bufos.write(buf, 0, len);
  61.                                 bufos.flush();                       
  62.                         }
  63.                         //输出复制的成功与否
  64.                         System.out.println(srcFile + "   复制结果::ture");  
  65.                 } catch (IOException e) {
  66.                         throw e;
  67.                 } finally {
  68.                         bufos.close();
  69.                         bufis.close();
  70.                 }
  71.                
  72.         }
  73. }
复制代码
运行结果:
字数超过限制了, 控制台结果 在第五张图片
更多图片 小图 大图
组图打开中,请稍候......

点评

第一题注意1不是素数,输出结果里边也最好不要出现  发表于 2013-7-12 00:21

评分

参与人数 1技术分 +5 收起 理由
神之梦 + 5

查看全部评分

回复 使用道具 举报
看看题自己会多少
回复 使用道具 举报
来瞅瞅:)。。。。
回复 使用道具 举报
第一次回复是7月10号18:05,第110楼
第一题答案
  1. /**
  2. *
  3. */
  4. package com.itheima.test;

  5. import java.io.BufferedReader;
  6. import java.io.InputStreamReader;
  7. import java.util.ArrayList;
  8. import java.util.List;

  9. /**
  10. * @author Administrator
  11. *
  12. */
  13. public class Test1 {
  14.         //判断是否为素数
  15.         private static boolean isprime(int i) {
  16.                 for(int j=2;j<=i/2;j++)
  17.                         if(i%j==0)
  18.                                 return false;
  19.                 return true;
  20.         }
  21.         public static void main(String[] args) throws Exception {
  22.                 //从键盘中获取值
  23.                 BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
  24.                 System.out.println("请输入正整数:");
  25.                 int unknown=0;
  26.                 try{
  27.                         String str=bReader.readLine();
  28.                         unknown=Integer.valueOf(str);
  29.                 }catch (Exception e) {
  30.                         //处理输入错误异常
  31.                         System.out.println("输入的数未能辨识,程序退出");
  32.                         System.exit(0);
  33.                 }
  34.                 resolve(unknown);
  35.                
  36.         }
  37.         public static void resolve(int unknown){
  38.                 if(isprime(unknown)){
  39.                         //如果该数为素数,就没有质因分解
  40.                         System.out.println("该数字为素数!");
  41.                 }
  42.                 else{
  43.                         List<Integer> list=primes(unknown);
  44.                         System.out.print(unknown+"=");
  45.                         //循环素数表
  46.                         for(int i=0;list.get(i)*list.get(i)<=unknown;i++)
  47.                         {
  48.                                 //如果该数字能被一个素数整除
  49.                                 if(unknown%list.get(i)==0)
  50.                                 {
  51.                                         System.out.print(list.get(i)+"*");
  52.                                         //重新定义unknown
  53.                                         unknown=unknown/list.get(i);
  54.                                         //重新循环素数列表
  55.                                         i=-1;
  56.                                 }
  57.                                 //如果结果已经是素数了,说明运算完毕,打印最后一个素数,结束
  58.                                 if(isprime(unknown)){
  59.                                         System.out.println(unknown);
  60.                                         return;
  61.                                 }
  62.                         }
  63.                 }
  64.         }
  65.         //得到小于number的素数
  66.         public static List<Integer> primes(int number){
  67.                 List<Integer> list=new ArrayList<Integer>();
  68.                 if(number>2)
  69.                 list.add(2);
  70.                 for(int i=3;i<number;i+=2)
  71.                         if(isprime(i))
  72.                                 list.add(i);
  73.                 return list;
  74.         }
  75.        

  76. }
复制代码
第二题答案
  1. /**
  2. *
  3. */
  4. package com.itheima.test;

  5. import java.util.ArrayList;
  6. import java.util.HashSet;
  7. import java.util.List;
  8. import java.util.Random;
  9. import java.util.Set;

  10. /**
  11. * @author Administrator
  12. *
  13. */
  14. public class Test2 {
  15.         //得到小于number的素数
  16.         public static List<Integer> primes(int number){
  17.                 List<Integer> list=new ArrayList<Integer>();
  18.                 if(number>2)
  19.                 list.add(2);
  20.                 for(int i=3;i<number;i+=2)
  21.                         if(isprime(i))
  22.                                 list.add(i);
  23.                 return list;
  24.         }
  25.        
  26.         //判断是否为素数
  27.         private static boolean isprime(int i) {
  28.                 for(int j=2;j<=i/2;j++)
  29.                         if(i%j==0)
  30.                                 return false;
  31.                 return true;
  32.         }
  33.         //找到相同的元素
  34.         public static Integer findSamePrime(int[] primes){
  35.                 //依次往Set里面加,因为set里面不能出现重复的元素,所以添加重复的元素会失败,根据这一特性,完成查找相同的元素
  36.                 Set<Integer> set=new HashSet<Integer>();
  37.                 for(int prime:primes)
  38.                         if(!set.add(prime))
  39.                                 return prime;
  40.                 return null;
  41.         }
  42.         public static void main(String[] args) {
  43.                 //先找到100以内的素数
  44.                 List<Integer> list=primes(100);
  45.                 //随机找到一个位置,再随机找到一个元素,完成一个n+1 的list
  46.                 int position =(new Random().nextInt(list.size()));
  47.                 list.add(position, list.get(new Random().nextInt(list.size())));
  48.                 myToString(list);
  49.                 //将数据转移到array数组中
  50.                 int[] primes=new int[list.size()];
  51.                 for(int i=0;i<primes.length;i++)
  52.                         primes[i]=list.get(i);
  53.                 ///通过findSamePrime方法找到相同的元素
  54.                 System.out.println("重复的素数是"+findSamePrime(primes));
  55.         }
  56.         ///打印找到的素数
  57.         public static void myToString(List<Integer> list)
  58.         {
  59.                 StringBuffer stringBuffer=new StringBuffer();
  60.                 stringBuffer.append("{");
  61.                 for(Integer i:list)
  62.                         stringBuffer.append(i+",");
  63.                 stringBuffer.deleteCharAt(stringBuffer.length()-1);
  64.                 stringBuffer.append("}");
  65.                                 System.out.println(stringBuffer.toString());
  66.         }

  67. }
复制代码
第三题答案
  1. /**
  2. *
  3. */
  4. package com.itheima.test;

  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.InputStreamReader;
  11. import java.io.OutputStream;
  12. import java.util.regex.Matcher;
  13. import java.util.regex.Pattern;

  14. /**
  15. * @author Administrator
  16. *
  17. */
  18. public class Test3 {

  19.         public static void main(String[] args) throws Exception {
  20.                 File file=new File("D:/src");
  21.                 copyAndRenameFile(file);
  22.                
  23.         }
  24.         public static void copyAndRenameFile(File currentfile) throws Exception{
  25.                 //判断是否为文件夹
  26.                 if(currentfile.isDirectory())
  27.                 {
  28.                         //是文件夹则对里面的文件递归使用copyAndRenameFile方法
  29.                         File[] files=currentfile.listFiles();
  30.                         for(File file:files)
  31.                                 copyAndRenameFile(file);
  32.                 }else if(currentfile.isFile())
  33.                 {
  34.                         //如果是文件,则对文件名进行判断
  35.                         String filename=currentfile.getName();
  36.                         //使用pattern和matcher进行文件名,如果匹配,就进行复制操作
  37.                         Pattern pattern=Pattern.compile("^([0-9]{1,})([a-zA-Z]{1,}).(java)$");
  38.                         Matcher matcher= pattern.matcher(filename);
  39.                         if(matcher.matches()){   
  40.                                 String filepath=currentfile.getPath();
  41.                                 filepath=filepath.substring(0, filepath.lastIndexOf("\\")+1);
  42.                                 //生成新的文件名
  43.                                 filepath=filepath+matcher.group(1)+matcher.group(2)+matcher.group(1)+".java";
  44.                                 //定义输入输出流
  45.                                 OutputStream ops=new FileOutputStream(filepath);
  46.                                 InputStream ips=new FileInputStream(currentfile);
  47.                                 byte[] datas=new byte[1024];
  48.                                 int b=-1;
  49.                                 while((b=ips.read(datas))!=-1){
  50.                                         ops.write(datas,0,b);
  51.                                 /*        如果使用下面的语句,文件里面就会出现很多null 因为datas没有填充完全
  52.                                  * ops.write(datas);
  53.                                  * */
  54.                                 }
  55.                                 //关闭流
  56.                                 ops.close();
  57.                                 ips.close();
  58.                                        
  59.                         }
  60.                                
  61.                                
  62.                                
  63.                 }
  64.         }
  65. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 朱晓杰 于 2013-7-12 17:15 编辑
  1. /**
  2. * 题目1、键盘录入一个正整数,将其分解质因数。如:输入30,打印出30=2*3*5。
  3. *
  4. * 分   析:该题的目的是将任意一个正整数分解质因数,涉及到了数学知识,要想完全弄明白,必须清楚涉及到的几个知识
  5. *
  6. * 知识1、什么是分解质因数?
  7. *                     每个合数都可以写成几个质数相乘的形式,其中每个指数都是这个合数的因数,叫做这个合数的分解质因数。
  8. *                     注意:分解质因数只针对合数。
  9. *                   
  10. *       分解质因数的概念我们清楚了,那么什么是合数,什么是质数呢?
  11. *
  12. * 知识2、合数:自然数中除了能被1和本身整除外,还能被其他的数整除
  13. *
  14. *        质数:自然数中除了能被1和本身整除外,不能被其他的数整除
  15. *        
  16. * 结 果: 合数 = 质数 * 质数 * 质数 ...,这个过程就叫做分解质因数
  17. *
  18. *       那么如何在程序中体现呢?
  19. *      
  20. *       根据以上概念,键盘录入的正整数  x 是有限制的,必须是大于1的合数,那么我们就需要进行判读,问题随之就来了
  21. *      
  22. *       如何判断一个正整数是否为合数?
  23. *      
  24. *        将该 循环对 处于  1~x 之间的正整数取余
  25. *      
  26. *       如果是
  27. *               若能被整除,则返回该被除数
  28. *      
  29. *       如果不是
  30. *               提示用户输入了非法值
  31. * 思路:1.接收键盘录入的数据
  32. *                
  33. *       2.判断接收的数据是否为合数
  34. *      
  35. *       3.返回结果
  36. *                                       
  37. */
  38. import static java.lang.System.*;
  39. import java.util.Scanner;
  40. public class PrimeFactors {

  41.         public static void main(String[] args) {
  42.                 out.println("/********** 程序功能:分解质因数      **********/");
  43.                 out.println("/********** 提示:请输入一个合数! **********/");
  44.                
  45.                 //获取键盘录入的正整数
  46.                 Scanner scan = new Scanner(in);
  47.                 int receVal = scan.nextInt();
  48.                
  49.                 //判断该正整数是否为合数
  50.                 boolean isComNum = isCompositeNum(receVal);
  51.                 if(isComNum){
  52.                         out.println(receVal + "=" + getPFRes(receVal) + ";");
  53.                 }else
  54.                         out.println(receVal + " 不是合数!");
  55.         }

  56.         /**
  57.          * @功能:获取一个合数分解质因数的结果
  58.          * @param:receVal
  59.          * @return:String,例如:30=2*3*5;
  60.          * */
  61.         public static String getPFRes(int receVal){
  62.                 StringBuilder resStr = new StringBuilder();
  63.                
  64.                 for(int i = 2; i < receVal - 1; i++){
  65.                         if(receVal % i == 0 && isPrimeNum(i)){
  66.                                 receVal = receVal / i;
  67.                                 //如果是resNum是素数,则直接返回 i * resNum,程序结束,否则继续循环,递归
  68.                                 resStr.append(i).append("*");
  69.                                 if(isPrimeNum(receVal)){
  70.                                         resStr.append(receVal);
  71.                                 }else{
  72.                                         resStr.append(getPFRes(receVal));
  73.                                 }
  74.                                 break;
  75.                         }
  76.                 }
  77.                 return resStr.toString();
  78.         }
  79.        
  80.         /**
  81.          * @功能:判断一个数是否为4数
  82.          * @param:receVal
  83.          * @return:boolean
  84.          * */
  85.         public static boolean isCompositeNum(int receVal){
  86.                 boolean flag = false;
  87.                 if(receVal < 1)
  88.                         flag = false;
  89.                 else{
  90.                         for(int i = 2; i < receVal; i++){
  91.                                 if(receVal % i == 0){
  92.                                         flag = true;
  93.                                         break;
  94.                                 }
  95.                         }
  96.                 }
  97.                 return flag;
  98.         }
  99.        
  100.         /**
  101.          * @功能:判断一个正整数是否为质数(素数)
  102.          * @param:num
  103.          * @return:boolean
  104.          * */
  105.         public static boolean isPrimeNum(int num){
  106.                 boolean flag = true;
  107.                 for(int i = num - 1; i > 1; i--){
  108.                         if(num % i == 0){
  109.                                 flag = false;
  110.                                 break;
  111.                         }
  112.                 }
  113.                 return flag;
  114.         }
  115. }
复制代码
  1. /**
  2. * 题目2、求出1-100之间的素数,假设有n个,将这些素数存入a[n+1]的数组中,        其中n个是求出的各个素数,还有一个是随机添加其中的一个素数
  3. *              这样数组中就有相同的两个素数,写一个搜索算法,找出数组中相同的那个素数。(随机添加的素数,可手动指定,也可利用随机方法产生)
  4. *       (注:存入数组后,数组中的所有元素理论上是无序的,相同的那个素数不一定就等于a[n],而是被存入了数组中的某个角标上)
  5. *      
  6. * 分析: 1、找出1-100之间的素数,并存入数组;
  7. *                  2、产生你找出素数中随机的一个,也存入数组,位置不确定;
  8. *       3、找出数组中相同的那个素数。
  9. *
  10. * 问题:1.什么是素数?由于1-100间的素数的个数不确定,所以数组如何定义?
  11. *
  12. *                  2.随机素数如何产生?手动?随机数?
  13. *
  14. *                  3.如何搜索相同的那个素数?且保证程序效率高
  15. *                   查找相同的那个素数,可以用遍历数组的方法,可是效率有点儿低,需要遍历所有数组,那么折半查找呢?
  16. *                        
  17. */
  18. import java.util.*;
  19. public class SearchPrime {

  20.         public static void main(String[] args) {
  21.                 int maxNum = 100,primeNum = 17;
  22.                 Integer[] primeArrays = getPrimeArrays(maxNum,primeNum);
  23.                 Arrays.sort(primeArrays);
  24.                 int index = Arrays.binarySearch(primeArrays, primeNum);
  25.                 System.out.println("数组中与 " + primeNum + " 相同的素数的位置是:primeArrays[" + index + "]=" + primeArrays[index]);
  26.         }
  27.        
  28.         /**
  29.          * @功能:求出1-100间的素数,手动指定一个素数,并将求出的素数与指定的素数存入数组
  30.          * @params:maxNum,primeNum
  31.          * @return:Integer[]
  32.          * */
  33.         public static Integer[] getPrimeArrays(int maxNum,int primeNum){
  34.                 Integer[] primeArrays = null;
  35.                 int count = 0;
  36.                 Collection<Integer> collect = new ArrayList<Integer>();
  37.                 for(int i = 2; i < maxNum; i++){
  38.                         //判断一个数是否为素数
  39.                         if(isPrimeNum(i)){
  40.                                 collect.add(i);
  41.                                 count++;
  42.                         }
  43.                 }
  44.                 collect.add(primeNum);
  45.                 primeArrays = collect.toArray(new Integer[count+1]);
  46.                 return primeArrays;
  47.         }
  48.        
  49.         /**
  50.          * @功能:判断一个正整数是否为质数(素数)
  51.          * @param:num
  52.          * @return:boolean
  53.          * */
  54.         public static boolean isPrimeNum(int num){
  55.                 boolean flag = true;
  56.                 for(int i = num - 1; i > 1; i--){
  57.                         if(num % i == 0){
  58.                                 flag = false;
  59.                                 break;
  60.                         }
  61.                 }
  62.                 return flag;
  63.         }
  64. }
复制代码
  1. import static java.lang.System.out;
  2. import java.io.*;
  3. /**
  4. * 题目3. 背景:在一个文件夹内有文件夹和文件,文件名的格式为:数字+名称.java。
  5. *                
  6. *        要求:把所有的.java文件复制一份,变为文件名格式为:数字+名称+数字.java。
  7. *                            其中数字是相对应的,名称由字母组成。如:01Demo.java——>01Demo01.java
  8. *           
  9. *                 分析:1.在一个文件夹内有文件夹和文件, 需要遍历文件夹,用到了递归
  10. *   
  11. *                       2.更改文件名,需要对文件名进行操作,用到了字符串操作
  12. */
  13. public class CopyFiles {

  14.         public static void main(String[] args) {
  15.                
  16.                 String path = "C://java//";
  17.                
  18.                 File rootPath = new File(path);
  19.                
  20.                 if(!rootPath.exists()){
  21.                         out.println(rootPath + "目录或文件不存在!");
  22.                 }else if(rootPath.isFile()){
  23.                         out.println(rootPath + "是一个文件!");
  24.                 }else if(rootPath.isDirectory()){
  25.                         try {
  26.                                 FileUtils(rootPath);
  27.                         } catch (Exception e) {
  28.                                 e.printStackTrace();
  29.                         }
  30.                 }
  31.         }
  32.        
  33.         /**
  34.          * @功能:文件操作路
  35.          * @param:rootPath
  36.          * @return:void
  37.          * */
  38.         private static void FileUtils(File rootPath)throws Exception{
  39.                 File[] files = rootPath.listFiles();
  40.                 for(File file : files){
  41.                         if(file.isFile()){
  42.                                 //重命名文件
  43.                                 renameFiles(file);
  44.                         }else if(file.isDirectory()){
  45.                                 //递归继续遍历
  46.                                 FileUtils(file);
  47.                         }
  48.                 }
  49.         }
  50.        
  51.         /**
  52.          * @功能:重命名文件
  53.          * @param:file
  54.          * @return:void
  55.          * */
  56.         private static void renameFiles(File file) throws Exception{
  57.                 //获取上级根目录
  58.                 String parentPath = file.getParent() + File.separator;
  59.                 //文件名
  60.                 String fileName = file.getName();
  61.                 //重命名后的文件名
  62.                 String newFileName = "";
  63.                 //重命名后的文件
  64.                 File destFile = null;
  65.                 if(fileName.endsWith(".java")){
  66.                         fileName = fileName.substring(0,fileName.indexOf(".java"));
  67.                         newFileName = fileName + fileName.substring(0,fileName.indexOf("Demo")) + ".java";
  68.                         destFile = new File(parentPath + newFileName);
  69.                         //复制文件
  70.                         copyFile(file, destFile);
  71.                 }
  72.         }
  73.        
  74.         /**
  75.          * @功能:复制文件
  76.          * @param:srcFile,destFile
  77.          * @return:void
  78.          * */
  79.         private static void copyFile(File srcFile, File destFile)
  80.                         throws FileNotFoundException, IOException {
  81.                 BufferedReader reader = new BufferedReader(new FileReader(srcFile));
  82.                 BufferedWriter writer = new BufferedWriter(new FileWriter(destFile));
  83.                 String content = "";
  84.                 while((content = reader.readLine()) != null){
  85.                         writer.write(content);
  86.                         writer.newLine();
  87.                         writer.flush();
  88.                 }
  89.                 if(writer != null){
  90.                         writer.close();
  91.                 }
  92.                 if(reader != null){
  93.                         reader.close();
  94.                 }
  95.         }
  96. }
复制代码

点评

第一题输入8结果是等于2,第三题出现角标越界、、、  发表于 2013-7-12 00:34

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 第二题的

查看全部评分

回复 使用道具 举报
我要看题!
回复 使用道具 举报
我要再次看题
回复 使用道具 举报
  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;

  4. public class Demo1 {

  5.         /**
  6.          * @param args
  7.          */
  8.         public static void main(String[] args) {
  9.                 // TODO 自动生成的方法存根
  10.        
  11.                 int number;   //定义一个number数
  12.                 System.out.println("请输入一个正整数:");   //下面用异常来使确定能够输入正整数的情况
  13.                 try{
  14.                 Scanner sc=new Scanner(System.in);
  15.                  number=sc.nextInt();
  16.        System.out.println(number+"="+Diviedzs(number));}catch(Exception e)
  17.        {
  18.                System.out.println("出错,你输入的不是一个正整数");
  19.        }
  20.         }
  21.       public static String Diviedzs (int number)   //分解质因数的方法,返回一个字符串
  22.       {
  23.               String result="";          //首先定义一个空字符串。
  24.               int divider=2;           //定义一个除数为2,注意2是最小的质数
  25.               if(number==1)            //当输入同样是正整数1是,报错
  26.                       return "抱歉,1不能分解质因数";
  27.               while(number>1)             //循环直到被除数除到1为止,则跳出循环
  28.               {
  29.                       if(number % divider==0)     //先整除质因数2
  30.                       {
  31.                               result +=divider+ "*";      //如能则添加到字符串中去
  32.                               number=number/divider;       //得到被除数整除后的数,使能继续被整除,直到1;
  33.                                           
  34.                       }else
  35.                       {
  36.                               divider++;              //质数加1,不会出现4,6等合数被上面判断是否整除的情况,因为2已经被整除了
  37.                       }
  38.               }
  39.               return result.substring(0, result.length()-1);    //最后打印的字符串末尾会有"*",所以取前length-1位
  40.       }
  41. }
复制代码
第二题:
  1. import java.util.*;

  2. public class Prime {
  3.         public static List<Integer> receive(int num){
  4.                 List<Integer> list = new ArrayList<Integer>();  //定义一个list集合
  5.                 list.add(2); //添加素数2            
  6.         for (int i = 3; i < num; i += 2) {
  7.             boolean flag = true;
  8.             for (int j = 3; j <= (int) Math.sqrt(i); j++) { //用n除以2至到sqrt(n),有一个能除尽就不是素数,否则是素数
  9.                 if (i % j == 0) {
  10.                     flag = false;
  11.                     break;
  12.                 }               
  13.         }     //不是素数跳出循环
  14.             if (flag) {
  15.                 list.add(i);    //添加素数
  16.             }
  17.            
  18.         }
  19.                 return list;
  20.         }
  21.     public static void main(String[] args) {
  22.       
  23.         List<Integer> list1=receive(100);   //添加100以内的素数
  24.         
  25.         int number = list1.size();      //获取长度
  26.         int[] primes = new int[number + 1];
  27.         int random = (int) (Math.random() * number);   //在list长度值内获取一个随机数
  28.         primes[random] = list1.get(random);   //将要相同的数添加到相应的的随机坐标内
  29.         for (int i = 0; i < number + 1; i++) {
  30.             if (i != random) {           //判断是否到了相同数的坐标,如不是则随机添加一个list集合的数
  31.                 int index = (int) (Math.random() * list1.size());
  32.                 primes[i] = list1.get(index);
  33.                 list1.remove(index);  //删除已经添加到数组的数
  34.             }
  35.         }
  36.        System.out.println("无序数组是");
  37.        for(int i=0;i<primes.length-1;i++)
  38.        {
  39.                System.out.print(primes[i]+" ");
  40.        }
  41.        System.out.println();
  42.          
  43.       
  44.         
  45.         Set<Integer> set = new HashSet<Integer>();
  46.         for (int i = 0; i < primes.length; i++) {
  47.             if (!set.add(primes[i])) {   //因为Set不能添加相同数
  48.                 System.out.println("相同的值是" + primes[i]);
  49.                 break;
  50.             }
  51.         }
  52.     }
  53. }
复制代码
第三题:
  1. import java.io.*;

  2. public class ChangeName {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static String newName(String fileName)
  7.         {
  8.                 return null;
  9.         }
  10.         public static void main(String[] args) {
  11.                 // TODO 自动生成的方法存根
  12.                 try {
  13.                         String filePath = "e:/test/"; // 获取文件路径
  14.                         File inFile = new File(filePath);
  15.                         File[] files = inFile.listFiles();
  16.                         for (int i = 0; i < files.length; i++) {
  17.                                 File file = files[i];
  18.                                 if (file != null && file.isFile()) {
  19.                                         String fileName = file.getName();
  20.                                         if ("java".equalsIgnoreCase(fileName.substring(fileName
  21.                                                         .indexOf(".") + 1))) // 判断是否JAVA文件
  22.                                         {
  23.                                                 char ch[] = fileName.toCharArray(); // 处理字符,首先将其变数字符数组
  24.                                                 int end = 0;
  25.                                                 for (int j = 0; j < ch.length; j++)
  26.                                                         // 处理到数字下一位字符坐标
  27.                                                         if (ch[j] < '0' || ch[j] > '9') {
  28.                                                                 end = j;
  29.                                                                 j = ch.length;
  30.                                                         }
  31.                                                 String newFileName = fileName.replace(".",
  32.                                                                 fileName.substring(0, end) + "."); // 将其"."改为"数字."
  33.                                                                                                                                         // 则01Demo.java——>01Demo01.java
  34.                                                 // 复制旧文件到新文件中去
  35.                                                 BufferedReader br = new BufferedReader(new FileReader(
  36.                                                                 file));
  37.                                                 File outFile = new File(filePath + newFileName);
  38.                                                 BufferedWriter bw = new BufferedWriter(new FileWriter(
  39.                                                                 outFile));
  40.                                                 char buf[] = new char[1024];
  41.                                                 int len = 0;
  42.                                                 while ((len = br.read(buf)) != -1)
  43.                                                         bw.write(buf, 0, len);
  44.                                                 bw.close();
  45.                                                 br.close();
  46.                                         }
  47.                                 }
  48.                         }
  49.                 } catch (Exception e) {
  50.                         e.printStackTrace();
  51.                 }

  52.         }

  53. }
复制代码

点评

第一题考虑得很全面。。第三题没有考虑文件夹里面可能还有文件夹  发表于 2013-7-12 21:31

评分

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

查看全部评分

回复 使用道具 举报
再抢几分
回复 使用道具 举报
看看题。
回复 使用道具 举报

版主,第一题已经修改完毕,能麻烦你说一下第三题在什么操作的情况下出现角标越界呢?

点评

突然发现你是3天前看的题,所以不能给你加分了,已经加了的就算了,哈哈~  发表于 2013-7-12 21:18
我测试的文件夹里面01到09个文件,运行后只复制到了07,还有08、09没有被复制,异常显示角标-1,27行  发表于 2013-7-12 21:16
回复 使用道具 举报
先搞一题
  1. /*1、键盘录入一个正整数,将其分解质因数。如:输入30,打印出30=2*3*5。
  2. 思路:1.通过Scanner传入一个数
  3.           2.利用for循环来实现短除法求出质因数并且判断输入的数是不是素数
  4.           3.利用StringBuffer来接受质因数
  5. */
  6. import java.util.*;
  7. class Test1
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 Scanner s=new Scanner(System.in);   //建立Scanner对象,用于传入参数
  12.                 System.out.println("请输入一个正整数:");
  13.                         Long i=s.nextLong();    //读取Long数值
  14.                         StringBuffer sb=new StringBuffer();//定义容器来存放质因数
  15.                         long num=i;
  16.                         if(i<=0)
  17.                                 throw new RuntimeException("请输入正整数");//判断输入值是否合法并处理异常
  18.                         for(long f=2;f<i;f++)
  19.                                 {
  20.                                         if(i%f==0)
  21.                                         {
  22.                                                 sb.append(f+"*");
  23.                                                 i=i/f;
  24.                                                 f=1;                 //每次只取一个数,取完再将f的值变为2,重新判断循环
  25.                                         }                               
  26.                                        
  27.                                 }
  28.                                 if(num==i)
  29.                                         System.out.println(num+"为素数");
  30.                                 else
  31.                                         {
  32.                                                 System.out.print(num+"="+sb+i);                                               
  33.                                         }
  34.                                        
  35.         }
  36. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
试试自己的能力,也看看各位的高见
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马