-
java 关于编写一个显示一个整数的所有最小因子5
[color=blue]提示用户输入一个正整数,然后以降序显示它的所有最小因子,例如:120,那么显示的最小因子为5,3,2,2,2。使用StackOfIntegers类来存储这些素数(例如:2,2,2,3,5)获取这些按倒序显示这些因子。
我不会用StackOfIntegers来显示因子啊2013年8月14日 19:32
3个答案 按时间排序 按投票排序
-
采纳的答案
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
-
StackOfIntegers?是不是可以更简单点,直接存放在arrayList中,完了之后排序一下(用这个方法来排序:Collections.sort(List<T> list, Comparator<? super T> c)),遍历打印,是否可以满足你的要求?
2013年8月15日 11:49
-
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编写程序来找到一个整数的所有因子。 首先,因子是能够整除给定整数的正整数。例如,如果n=12,它的因子有1、2、3、4、6和12。为了解决这个问题,我们可以编写一个简单的Java程序,通过...
然后,根据`a`和`b`的大小关系,循环遍历较小值至1的所有可能因子,找到第一个同时能被`a`和`b`整除的数,即为最大公约数。 #### 优化算法:欧几里得算法 虽然上述方法可以解决问题,但在实际应用中,尤其是处理大...
为了实现质数分解,我们可以先判断一个数是否为质数,如果不是,我们可以通过分解其因子,不断找出质数并记录,直到所有因子都是质数为止。 最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common...
在本Java实验中,我们探讨的是一个用于计算两个整数之间最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)的小程序。这个程序是Java语言实现的,它体现了基础的算法和数学知识...
在这个实验中,我们将编写一个Parent类,包含一个计算最大公约数的方法f(int a, int b),然后编写一个Child类,继承自Parent类,并重写方法f(int a, int b),使其返回两个整数的最小公倍数。 一、Java中的类继承...
描述中的任务明确指出,我们需要编写一个程序,接受一个正整数m作为输入,然后判断并输出该数是否为素数。 在编程中,判断素数的方法有很多种。以下是一种常见且效率较高的方法: 1. **基础检查**:首先,我们需要...
在数学中,两个或多个整数共有的约数中最大的一个称为最大公约数,而能同时被几个整数整除的最小的正整数称为最小公倍数。程序中使用了辗转相除法(也称欧几里得算法)来求最大公约数,通过一个循环结构不断将除数和...
编写一个Java程序来计算兔子繁殖问题,可以使用循环或递归方法。 【程序 2】此题要求找出101到200之间的素数。素数是大于1且只有1和其本身两个正因子的自然数。判断素数的常用算法是埃拉托斯特尼筛法,但在这个问题...
在Java中,我们可以通过遍历从2到目标数字平方根的所有数字,来检查是否存在可以整除该数字的因子。如果存在这样的因子,则可以确定该数字不是素数;反之,则为素数。在实际编程中,我们需要注意算法的效率,避免...
质因数是构成一个正整数的素数因子。编写程序来分解一个数的质因数,需要从最小的素数开始,逐一尝试是否能整除目标数。如果能整除,则将其除数和商分别输出,直到商为1为止。这个练习题有助于加深对循环和条件语句...
输出n的所有质数因子,首先编写一个判断质数的函数,然后遍历2到n的整数,检查每个数是否是n的因子,如果是质数且是n的因子,则打印出来。 7. **个位数为6且能被3整除的4位数**: 这类数需要同时满足两个条件:个位...
- 最小公倍数是指两个或多个整数共有倍数中最小的一个。 - 通常通过辗转相除法来求解最大公约数,进而利用公式求最小公倍数。 ### 7. 统计字符串中字母出现次数 **题目描述:** 编写一个程序,统计输入字符串中...
程序通过一个名为`iszhishu`的方法判断一个数是否为素数,它使用了一个优化的判断方式,只需要检查到数的平方根即可,因为一个非素数肯定可以表示为两个因子的乘积,而这两个因子至少有一个小于或等于它的平方根。...
优化方法是只需检查到sqrt(n)即可,因为如果n有因子大于sqrt(n),那么必然存在一个小于或等于sqrt(n)的因子。 【程序 3】 "水仙花数"是三位数的一个特定概念,即一个数的各个位上的数字立方和等于该数本身。解题...
在Java编程语言中,判断一个数是否为质数是常见的算法面试题目,因为这涉及到基础的数学知识和编程技巧。质数是指大于1且只有1和它本身两个正因数的自然数。以下是对这个话题的详细阐述: 1. **质数定义**:在数论...
代码中,使用一个while循环不断尝试用2(初始的最小质数)去整除输入的正整数n,如果可以整除,就打印出k(即2)并更新n为n/k,继续循环;如果n不能被k整除,则将k加1,继续寻找下一个可能的质因数。 这些程序是...
本文将详细介绍如何使用Java编写一个简单的程序来实现这一功能。 #### 二、基础知识回顾 在开始编写代码之前,我们需要了解一些基础知识: - **质数**:只能被1和自身整除的大于1的自然数。 - **合数**:除了1和...
在给定的代码片段中,我们看到了一个用Java编写的简单程序,用于寻找并打印出1到1000之间的所有完数。下面是对这段代码的详细解析: #### 1. 变量定义与初始化 ```java int i, j, sum = 0; ``` 这里定义了三个整型...
14. 完全平方数判断:完全平方数是指一个整数,它加上 100 后是一个完全平方数,加上 168 又是一个完全平方数。 15. 日期判断:日期判断是指输入某年某月某日,判断这一天是这一年的第几天? 16. 排序算法:排序...
- 质因数分解是将一个正整数表示为其质因数乘积的过程。程序4中,通过不断尝试最小质数k来分解输入的正整数n,直到n变为1,完成分解。 - 使用`Scanner`类进行用户输入,使得程序更具交互性,可以接受用户输入的正...