java中如何判断一个数是否完全数!!
答案:4 悬赏:20 手机版
解决时间 2021-11-17 14:46
- 提问者网友:留有余香
- 2021-11-16 22:32
java中如何判断一个数是否完全数!!
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-11-16 23:06
java中如何判断一个数是否完全数,可以分为求约数(不包括本身)、求约数之和以及比较自身和约数之和是否相等三个步骤。
第一步:求约数
public static List yueShu(int n){
List list = new ArrayList();
for(int i=1;i<=n/2;i++){
if(n%i==0){
list.add(i);
}
}
return list;
}
解析:如果该数除以循环中的变量的余数为零,那么该变量就是该数的约数。其中有个注意点,如果循环变量大于该数的一半之后就不会是该数的余数了(该数本身除外),所以循环到该数一半时便结束。
第二步:求约数之和
public static int sum(List list){
int total=0;
Iterator it=list.iterator();
while(it.hasNext()){
total+=it.next();
}
return total;
}
解析:利用while遍历List,将List中的值全部加起来。
第三步:比较本身与约数之和是否相等
public static boolean isPerfect(int n){
return n==sum(yueShu(n));
}
如果该数与该数的约数之和相等,则该方法返回true,否则返回false。最后根据该方法的返回值判断该数是不是完全数。
第一步:求约数
public static List
List
for(int i=1;i<=n/2;i++){
if(n%i==0){
list.add(i);
}
}
return list;
}
解析:如果该数除以循环中的变量的余数为零,那么该变量就是该数的约数。其中有个注意点,如果循环变量大于该数的一半之后就不会是该数的余数了(该数本身除外),所以循环到该数一半时便结束。
第二步:求约数之和
public static int sum(List
int total=0;
Iterator it=list.iterator();
while(it.hasNext()){
total+=it.next();
}
return total;
}
解析:利用while遍历List,将List中的值全部加起来。
第三步:比较本身与约数之和是否相等
public static boolean isPerfect(int n){
return n==sum(yueShu(n));
}
如果该数与该数的约数之和相等,则该方法返回true,否则返回false。最后根据该方法的返回值判断该数是不是完全数。
全部回答
- 1楼网友:污到你湿
- 2021-11-17 01:25
import java.util.*;
public class four_7 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入一个数:");
int x=in.nextInt();
int sum=1,y,i;
for(i=2;i if(x%i==0) {
y=x/i;
sum+=y+i;
}
}
if(x==sum) System.out.println(x+"是一个完全数");
else System.out.println(x+"不是一个完全数");
}
}
public class four_7 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入一个数:");
int x=in.nextInt();
int sum=1,y,i;
for(i=2;i
y=x/i;
sum+=y+i;
}
}
if(x==sum) System.out.println(x+"是一个完全数");
else System.out.println(x+"不是一个完全数");
}
}
- 2楼网友:行路难
- 2021-11-17 01:00
import java.util.*;
public class X4_6 {
static void print(int n) {
System.out.print(n + " = 1");
for (int i = 2; i <= n/2; i++)
if (n%i == 0) System.out.print(" + " + i);
}
static boolean f(int n) {
int s = 1;
for (int i = 2; i <= n/2; i++)
if (n%i == 0) s += i;
if (n == s) return true;
else return false;
}
public static void main(String[] args) {
try
{
System.out.print(" I = ");
Scanner in = new Scanner(System.in);
int I = in.nextInt();
if(f(I)) print(I);
else System.out.println ("不是完全数");
System.out.println();
}
catch(Exception e) { System.out.println ("输入有误"); }
}
}
public class X4_6 {
static void print(int n) {
System.out.print(n + " = 1");
for (int i = 2; i <= n/2; i++)
if (n%i == 0) System.out.print(" + " + i);
}
static boolean f(int n) {
int s = 1;
for (int i = 2; i <= n/2; i++)
if (n%i == 0) s += i;
if (n == s) return true;
else return false;
}
public static void main(String[] args) {
try
{
System.out.print(" I = ");
Scanner in = new Scanner(System.in);
int I = in.nextInt();
if(f(I)) print(I);
else System.out.println ("不是完全数");
System.out.println();
}
catch(Exception e) { System.out.println ("输入有误"); }
}
}
- 3楼网友:廢物販賣機
- 2021-11-16 23:35
下面是用JAVA写的求1000之内的完数。。。。
public class Test11 {
public static void main(String args[]){
for(int a=1;a<=1000;a++){
int sum=0;
for(int i=1;i<=a/2;i++)
if(a%i==0)
sum+=i;
if(a==sum)
System.out.println(a);
}
}
}
输出结果是:6,28,496
public class Test11 {
public static void main(String args[]){
for(int a=1;a<=1000;a++){
int sum=0;
for(int i=1;i<=a/2;i++)
if(a%i==0)
sum+=i;
if(a==sum)
System.out.println(a);
}
}
}
输出结果是:6,28,496
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |