0 0

java 关于编写一个显示一个整数的所有最小因子5

[color=blue]提示用户输入一个正整数,然后以降序显示它的所有最小因子,例如:120,那么显示的最小因子为5,3,2,2,2。使用StackOfIntegers类来存储这些素数(例如:2,2,2,3,5)获取这些按倒序显示这些因子。
   我不会用StackOfIntegers来显示因子啊
2013年8月14日 19:32

3个答案 按时间排序 按投票排序

0 0

采纳的答案

package com.zyn.iteye;

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

public class StackOfIntegers {
	//存放分解的素数
	List<Integer> list = new ArrayList<Integer>();
	
	//主方法,求分解素数
	public void getSub(int sum){
		//获取中间数的后一个数,保证中间数可以在下面的for中被循环
		int middle = getMiddleAfter(sum);
		//2是最小的素数,从2开始循环除
		for(int i=2;i<middle;i++){
			//如果i不为素数,直接跳过,循环下个数
			if(!isSuShu(i)){
				continue;
			}
			//余数
			int yu = sum%i;
			//商
			int last = sum/i;
			if(yu==0){
				//余数为0,i为sum的因子,填入list
				list.add(i);
				//如果商为素数,则添加商到list,程序结束
				if(isSuShu(last)){
					list.add(last);
					return;
				}
				//如果商不为素数,递归商调用本方法,分解商
				getSub(sum/i);
				//如果sum可以被素数因子整除,直接分解商,后续的因子不必再循环
				break;
			}
		}
	}
	
	//如果可以被2整除,则+1,否则+1后再除以2
	public int getMiddleAfter(int num){
		if(num%2==0){
			return num/2+1;
		}else{
			return (num+1)/2;
		}
	}
	
	//判断是否是素数
	public boolean isSuShu(int num){
		boolean flag = true;
		for(int i=2;i<num;i++){
			if(num%i==0){
				flag = false;
				break;
			}
		}
		return flag;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StackOfIntegers s = new StackOfIntegers();
		s.getSub(120);
		System.out.println(s.list);
	}

}

2013年8月14日 20:16
0 0

StackOfIntegers?是不是可以更简单点,直接存放在arrayList中,完了之后排序一下(用这个方法来排序:Collections.sort(List<T> list, Comparator<? super T> c)),遍历打印,是否可以满足你的要求?

2013年8月15日 11:49
0 0



public static void main(String[] args) {
StackOfIntegers stackOfIntegers = GetFactors(120);
System.out.println(stackOfIntegers.getSize());

}

static StackOfIntegers GetFactors(int n)
{
    List<Integer> factors = new ArrayList<Integer>();
    int x = 2;
    while (x <= n)
    {
        if (n % x == 0)
        {
            factors.add(x);
            n = n / x;
        }
        else
        {
            x++;
            if (x * x >= n)
            {
                factors.add(n);
                break;
            }
        }
    }
    Collections.sort(factors);
    Collections.reverse(factors);
    StackOfIntegers stackOfIntegers = new StackOfIntegers();
    for(int i :factors){
    stackOfIntegers.push(i);
}
   
    return stackOfIntegers;
}

2013年8月14日 21:07

相关推荐

    java求一个整数的因子.rar

    本文将深入探讨如何使用Java编写程序来找到一个整数的所有因子。 首先,因子是能够整除给定整数的正整数。例如,如果n=12,它的因子有1、2、3、4、6和12。为了解决这个问题,我们可以编写一个简单的Java程序,通过...

    JAVA编写两个数的最大公约数

    然后,根据`a`和`b`的大小关系,循环遍历较小值至1的所有可能因子,找到第一个同时能被`a`和`b`整除的数,即为最大公约数。 #### 优化算法:欧几里得算法 虽然上述方法可以解决问题,但在实际应用中,尤其是处理大...

    JAVA基础 第一篇:素数、合数、质数分解、最大公约数、最小公倍数.docx

    为了实现质数分解,我们可以先判断一个数是否为质数,如果不是,我们可以通过分解其因子,不断找出质数并记录,直到所有因子都是质数为止。 最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common...

    Java实验中的一个程序

    在本Java实验中,我们探讨的是一个用于计算两个整数之间最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)的小程序。这个程序是Java语言实现的,它体现了基础的算法和数学知识...

    求最大公约数最小公倍数的java程序类的继承.doc

    在这个实验中,我们将编写一个Parent类,包含一个计算最大公约数的方法f(int a, int b),然后编写一个Child类,继承自Parent类,并重写方法f(int a, int b),使其返回两个整数的最小公倍数。 一、Java中的类继承...

    3_判断素数_yes_

    描述中的任务明确指出,我们需要编写一个程序,接受一个正整数m作为输入,然后判断并输出该数是否为素数。 在编程中,判断素数的方法有很多种。以下是一种常见且效率较高的方法: 1. **基础检查**:首先,我们需要...

    Java 面试题全集

    在数学中,两个或多个整数共有的约数中最大的一个称为最大公约数,而能同时被几个整数整除的最小的正整数称为最小公倍数。程序中使用了辗转相除法(也称欧几里得算法)来求最大公约数,通过一个循环结构不断将除数和...

    java算法练习试题

    编写一个Java程序来计算兔子繁殖问题,可以使用循环或递归方法。 【程序 2】此题要求找出101到200之间的素数。素数是大于1且只有1和其本身两个正因子的自然数。判断素数的常用算法是埃拉托斯特尼筛法,但在这个问题...

    Java经典算法四十题

    在Java中,我们可以通过遍历从2到目标数字平方根的所有数字,来检查是否存在可以整除该数字的因子。如果存在这样的因子,则可以确定该数字不是素数;反之,则为素数。在实际编程中,我们需要注意算法的效率,避免...

    java基础编程练习题(50题及答案).doc

    质因数是构成一个正整数的素数因子。编写程序来分解一个数的质因数,需要从最小的素数开始,逐一尝试是否能整除目标数。如果能整除,则将其除数和商分别输出,直到商为1为止。这个练习题有助于加深对循环和条件语句...

    2级Java考试题上机【浙江】

    输出n的所有质数因子,首先编写一个判断质数的函数,然后遍历2到n的整数,检查每个数是否是n的因子,如果是质数且是n的因子,则打印出来。 7. **个位数为6且能被3整除的4位数**: 这类数需要同时满足两个条件:个位...

    50道Java经典编程练习(附答案)

    - 最小公倍数是指两个或多个整数共有倍数中最小的一个。 - 通常通过辗转相除法来求解最大公约数,进而利用公式求最小公倍数。 ### 7. 统计字符串中字母出现次数 **题目描述:** 编写一个程序,统计输入字符串中...

    java经典算法42例

    程序通过一个名为`iszhishu`的方法判断一个数是否为素数,它使用了一个优化的判断方式,只需要检查到数的平方根即可,因为一个非素数肯定可以表示为两个因子的乘积,而这两个因子至少有一个小于或等于它的平方根。...

    java 经典50题练习

    优化方法是只需检查到sqrt(n)即可,因为如果n有因子大于sqrt(n),那么必然存在一个小于或等于sqrt(n)的因子。 【程序 3】 "水仙花数"是三位数的一个特定概念,即一个数的各个位上的数字立方和等于该数本身。解题...

    Java 算法面试题 判断质数

    在Java编程语言中,判断一个数是否为质数是常见的算法面试题目,因为这涉及到基础的数学知识和编程技巧。质数是指大于1且只有1和它本身两个正因数的自然数。以下是对这个话题的详细阐述: 1. **质数定义**:在数论...

    Java小程序

    代码中,使用一个while循环不断尝试用2(初始的最小质数)去整除输入的正整数n,如果可以整除,就打印出k(即2)并更新n为n/k,继续循环;如果n不能被k整除,则将k加1,继续寻找下一个可能的质因数。 这些程序是...

    使用java代码进行分解质因数

    本文将详细介绍如何使用Java编写一个简单的程序来实现这一功能。 #### 二、基础知识回顾 在开始编写代码之前,我们需要了解一些基础知识: - **质数**:只能被1和自身整除的大于1的自然数。 - **合数**:除了1和...

    完数的判断txt

    在给定的代码片段中,我们看到了一个用Java编写的简单程序,用于寻找并打印出1到1000之间的所有完数。下面是对这段代码的详细解析: #### 1. 变量定义与初始化 ```java int i, j, sum = 0; ``` 这里定义了三个整型...

    JAVA算法40 题练习

    14. 完全平方数判断:完全平方数是指一个整数,它加上 100 后是一个完全平方数,加上 168 又是一个完全平方数。 15. 日期判断:日期判断是指输入某年某月某日,判断这一天是这一年的第几天? 16. 排序算法:排序...

    最新JAVA编程题全集

    - 质因数分解是将一个正整数表示为其质因数乘积的过程。程序4中,通过不断尝试最小质数k来分解输入的正整数n,直到n变为1,完成分解。 - 使用`Scanner`类进行用户输入,使得程序更具交互性,可以接受用户输入的正...

Global site tag (gtag.js) - Google Analytics