编写一个程序,求一个数的所有因子

如题所述

第1个回答  2015-06-21
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);
}

}本回答被提问者采纳

编写一个程序,求一个数的所有因子
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 isSuSh...

。使用JAVA编写一个程序求出一个整数的所有因子的和
以下是一个使用Java编写的程序,用于求出一个整数的所有因子的和:在这个程序中,首先从用户那里获取一个整数输入。然后,使用一个循环来遍历从1到该整数的所有整数。对于每个整数,如果它是该整数的因子(即该整数除以该整数的余数为0),则将该整数加到总和中。最后,输出所有因子的和。例如,如果用户...

用c语言求一个数的所有因子?
include <stdio.h> include <stdlib.h> define N 100 long factor(int m,int fac[],int *cp){ int c1,c2,i,k;long s;fac[0]=1;for(c1=s=1,c2=N-1,i=2;;){ k=m\/i;if(m%i==0){ if(i!=k){ fac[c1++]=i;fac[c2--]=k;s+=i+k;printf("i=%d k=%d\\n",i,k)...

c语言 输入一个正整数n,输出n的所有因子
当您需要在C语言中编写程序来找出一个正整数n的所有因子时,首先需要定义一些整型变量,以便进行运算。程序的流程如下:步骤1:初始化两个整数变量n和m,确保它们都是大于2的正整数,作为输入。步骤2:设置一个临时变量t,其值为m,同时定义一个变量i,初值设为2,用于遍历可能的因子。接下来,使用do...

用C语言编一函数,找出任一整数的全部因子。【程序尽量完整】_百度知 ...
include "stdio.h"int main(){ int x,i;scanf("%d",&x);\/\/输入一个整数 for(i=1;i<=x;++i){ if(x%i==0)printf("%d\\n",i);\/\/输出因子 } return 0;} 这样就OK了~~不明白的话就问我

C语言:编写一个函数,求出一个给定数字的所有因子。
1.对1~本身的各个数取余,为零的即为其因子。include <stdio.h>void factor(int n){ printf("%d factor has: ", n); for (int i = 1; i <= n; i ++) { if (n % i == 0) printf("%d ", i); } printf("\\n");}int main(){ factor(27); ...

c语言输入一个数输出他全部的素数因子(问题注释在源代码中)
1、打开编译器,在此演示的是C-FREE。2、Ctrl+N新建一个文件。3、输入如下程序:#include "stdio.h"\/\/判断n是否是完数bool isWanShu(int n){ int sum=0, j; for(j=1;j<n;j++) {if(0==n%j) sum+=j;} if(sum==n) {printf("%d 是完数, ", n);return true; } els...

C语言,输入任意正整数,求出其所有因子显示出来
include "stdio.h"int main(int argc,char *argv[]){int n,m;printf("Please enter a positive integer...\\nn=");if(scanf("%d",&n)!=1 || n<=0){printf("Input error, exit...\\n");return 0;}printf("%d --> 1",n);for(m=2;m<=n;m++)if(n%m==0)printf(",%d",...

...一个整数n(要求n在100和1000之间),计算并输出整数n的所有因子...
首先,代码使用scanf函数接收用户输入的一个整数n,如果n不在100到1000之间,则使用while循环要求用户重新输入。然后,使用for循环计算n的所有因子之和。从2开始循环到n-1,如果i是n的因子,则将其加入到变量sum中。最后,使用printf函数输出结果。总体而言,该代码是一个简单的数学计算程序,演示了基本的...

c语言编程 编写一个函数,求出一个给定数字的所有因子。如72=2*2*2*...
1; i++) { while(n % i == 0) { n \/= i; if(n == 1) printf("%d\\n", i); else printf("%d * ", i); } } return 0;}

相似回答