Java版求1000以内的完全数

/*
 * 若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数,简称完数。
 * 例如:6=1+2+3。
 * 题目:求1000以内的完全数。
 */
public class PerfectNumber {

	// 数字上限
	static Integer limit = 1000;

	public static void main(String[] args) {
		System.out.println(limit + "以内的完全数有:");
		fun(limit);
	}

	public static void fun(Integer limit) {
		for (int i = 1; i <= limit; i++) {
			// 定义真因子之和变量
			int sum = 0;
			for (int j = 1; j < i / 2 + 1; j++) {
				// 如果当前数能被整除
				if (i % j == 0) {
					sum += j;
				}
			}
			// 如果真因子(即除了自身以外的约数)的和恰好等于它本身,说明是完全数。
			if (sum == i) {
				System.out.println(i);
			}
		}
	}
}

输出结果:

1000以内的完全数有:
6
28
496
时间: 2024-10-31 07:44:26

Java版求1000以内的完全数的相关文章

一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间

我曾经去一个公司面试,遇到这么一个题目:求1000以内的素数有多少个?用多线程实现,并给出消耗时间.我想了半天,没有想出多线程的解决方案.今天因为机缘到了,我浅谈下我的解法. 这道题,显然得考虑两个问题: 1.多线程的问题 2.算法性能问题 有人觉得1000以内还考虑什么算法性能?这肯定很快.但是话说回来,这个都有必要用多线程吗?如果我们求10000000以内的素数有多少个?是不是必须考虑以上两个问题了?多线程和算法优化的目的都是为了提高程序执行的效率.我们首先来考虑算法问题,什么是素数?素数:

26.一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3,求1000以内所有的完数.

?#include<iostream> using namespace std; int main() { for(int i=1;i<=1000;i++) { int sum=0; for(int j=1;j<i;j++) { if(i%j==0) { sum+=j; } } if(sum==i) { cout<<i<<" "<<endl; } } return 0; } 26.一个正整数如果恰好等于它的因子之和,这个数称为

&#8203;求1000以内是3或者是5的倍数的值的和

求1000以内是3或者是5的倍数的值的和?总结如下: 1.笨方法 a=0    for n in range(1,1000):    if n%3==0 or n%5==0:        a=a+n    print  a 2.群里某人发了个更简单的,一行解决,如下: sum(n for n in range(1,1000) if n%3==0 or n%5==0)

算法基础-求1000以内的质数

1 //筛选1000以内的所有质数 2 //说明:除了自身以外,无法被其它整数整除的数称之为质数. 3 // 4 #include <stdio.h> 5 #include <stdlib.h> 6 #define N 1000 7 8 int main(void) { 9 int i, j; 10 int prime[N + 1]; 11 //初始化数组都等于1 12 for( i = 2; i <= N; i++){ 13 prime[i]=1; 14 } 15 //嵌套

18.求1000以内的完数

一个数如果恰好等于他的因字数之和,这个数就称为"完数",例如,6的因子为1,2,3,而6=1+2+3,因此6是一个"完数" 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10; 6 int i,a,n,s; 7 for(a=2; a<=1000; a++) //a是2-1000之间的整数,检查它是

python求1000以内的素数

import timedef isPrime(n): for i in range(2,int(n**0.5)+1): if n % i==0: return False else: return True strPrimes=""t=time.clock()for j in range(2,1000): if isPrime(j): strPrimes=strPrimes+str(j)+"," print(strPrimes)print("Time us

Python3练习题求1000以内所有3和5的倍数的总和

sum = 0 for i in range(1,1000):     if i%3 == 0 or i%5 == 0:         sum += i print(sum) 原文地址:https://www.cnblogs.com/jackzz/p/9125562.html

Python求1000以内所有3或5的倍数的和。

1 a=0 2 for n in range(1,1000): 3 if n%3==0 or n%5==0: 4 a=a+n 5 print(a) 运行结果: 233168 原文地址:https://www.cnblogs.com/pangzx/p/9222191.html

【Java】编程找出1000以内的所有完数。

1 package com.xt.homework.hw09; 2 /** 3 * 5. 一个正整数,如果恰好等于除它本身外的所有因子之和,这个数就称为"完数". 4 * 例如6=1+2+3,编程找出1000以内的所有完数. 5 * 6 * 7 * @author 天耀二期 8 * 杨勃隆 9 */ 10 public class HomeWork05 { 11 public static void main(String[] args){ 12 { 13 int i,j,k; 14