| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2475 人关注过本帖, 2 人收藏
标题:新手自学java .求老师帮助
只看楼主 加入收藏
jscs_he
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-3-23
结帖率:0
收藏(2)
已结贴  问题点数:20 回复次数:5 
新手自学java .求老师帮助
在看视屏学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();
    }
}
搜索更多相关主题的帖子: 因式分解 public number import 学java 
2016-03-23 08:28
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:20 
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();
     }
 }
2016-03-23 09:26
jscs_he
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-3-23
收藏
得分:0 
回复 楼主 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);
    }
}
2016-03-23 11:09
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
这样的吗?

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);
     }
 }
2016-03-23 11:25
jscs_he
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-3-23
收藏
得分:0 
回复 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这个是数字素数");*/
               
               
    }
}
2016-03-23 11:39
快速回复:新手自学java .求老师帮助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023202 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved