注册 登录
编程论坛 JAVA论坛

新手自学java .求老师帮助

jscs_he 发布于 2016-03-23 08:28, 2717 次点击
在看视屏学java 遇到一个作业 说用 循环 编写一个因式分解
我在网上看到很多代码,看到一个用while循环写的 但是看的不是很懂!
代码如下:求老师帮我注解下
import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input number:");
        int input = scan.nextInt();
        int i = 2;
        int count = 0;
        System.out.print(input + "=");
        while (input >= i) {            
            if (input % i == 0) {
                if (count > 0) {
                    System.out.print("*");
                }
                input = input/i;
                System.out.print(i);
                count++;
            }
            else {
                i++;
            }
        }
        if (count == 1) {
            System.out.print("*1");
        }
        else if (count < 1) {
            System.out.print("1*1");
        }
        System.out.println();
    }
}
5 回复
#2
grmmylbs2016-03-23 09:26
import java.util.Scanner;

 public class test {
     public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);
         System.out.println("Input number:");
         int input = scan.nextInt();        //读输入的int数据
         int i = 2;
         int count = 0;
         System.out.print(input + "=");
         while (input >= i) {            //i从2开始累加直到大于输入的数据
             if (input % i == 0) {        //i累加过程中碰到能整除输入数据的话,就输出*i
                 if (count > 0) {
                     System.out.print("*");   
                 }
                 input = input/i;        //除以一个因子后,用得到的商继续找因子,回到上面的if (input % i == 0) 处,用此时的i继续除这个商
                 System.out.print(i);
                 count++;            //count表示找到的因子个数
             }            //回到上面的if (input % i == 0) 处,用此时的i继续除这个商
             else {        //如果i不能整除,则i加一再去除
                 i++;
             }
         }
         if (count == 1) {            //只找到1个因子,表示该因子就是输入的数本身,因为count为1时, if (count > 0) 没满足没有输入*,所以这里要这样写
             System.out.print("*1");
         }
         else if (count < 1) {        //一个也没有表示输入的数小于i=2,否则至少会找到一个
             System.out.print("1*1");
         }
         System.out.println();
     }
 }
#3
jscs_he2016-03-23 11:09
回复 楼主 jscs_he

我用这样的for循环也做出来了,但是每次最后都会*1,我想把那些素数单独说明 而不是 显示 7=7*1,老师这个应该怎么做,
import java.util.Scanner;
class zuoye1
{
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
            System.out.print("请输入一个数字:");
            int n = s.nextInt();
            System.out.print(n+"=")'
                for (int i =2;i<=n ;i++ )
                {
                    if(i>2)
                    if(n%i==0)
                    {
                        System.out.print(i+"*");
                        n=n/i;
                        i=1;
                    }        
                }
                System.out.println(n);
    }
}
#4
grmmylbs2016-03-23 11:25
这样的吗?

import java.util.Scanner;
public class  zuoye1
 {
     public static void main(String[] args)
     {
         Scanner s = new Scanner(System.in);
             System.out.print("请输入一个数字:");
             int n = s.nextInt();
             System.out.println(n+"的因子有:");
                 for (int i =2;i<=n ;i++ )
                 {
                     if(n%i==0)
                     {
                         System.out.println(i);
                         n=n/i;
                         i -=1;
                         continue;
                     }        
                 }
                 System.out.println(n);
     }
 }
#5
jscs_he2016-03-23 11:39
回复 3楼 jscs_he
这样应该也行 我最终是这么写的
用了while循环和for 循环都做了一遍 !
import java.util.Scanner;
class zuoye1
{
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
            System.out.print("请输入一个数字:");
            int n = s.nextInt();
            System.out.print(n+"=");
            /*
                           int i = 2;
                        while (n>i)
            {
                    if(n!=i)
                {
                    if (n%i==0)
                    {
                        System.out.print(i+"*");
                        n = n / i;
                    }
                        i++;
                }
            }
                System.out.println(n);*/
                int count = 0;//累加因子数
                for (int i =2;i<n/2 ;i++ )//从2开始除,一个数除以大于自己一半的数必然不是整数
                {
                    
                    if(n%i==0)//判断是否有余数
                    {
                        System.out.print(i+"*");//没有余数打印出i*
                        n=n/i;//最后结果应该是等于1页就是i=n-1的时候循环不成立
                        count++;
                    }
                }
                System.out.print(n);
            /*    if(count ==0)
                        System.out.println("*1这个是数字素数");*/
               
               
    }
}
1