Ⅰ 1000以內的完數有哪些
有三個,6、28、496。
第一個完全數是6,它有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6。
第二個完全數是28,它有約數1、2、4、7、14、28,除去它本身28外,其餘5個數相加,1+2+4+7+14=28。
第三個完全數是496,有約數1、2、4、8、16、31、62、124、248、496,除去其本身496外,其餘9個數相加,1+2+4+8+16+31+62+124+248=496。
推導公式:
大數學家歐拉曾推算出完全數的獲得公式:如果p是質數,且2^p-1也是質數,那麼(2^p-1)X2^(p-1)便是一個完全數。
例如p=2,是一個質數,2^p-1=3也是質數,(2^p-1)X2^(p-1)=3X2=6,是完全數。
例如p=3,是一個質數,2^p-1=7也是質數,(2^p-1)X2^(p-1)=7X4=28,是完全數。
例如p=5,是一個質數,2^p-1=31也是質數,(2^p-1)X2^(p-1)=31X16=496是完全數。
Ⅱ 求1000以內的所有完數
#include <stdio.h>
void main()
{
int i,j;
printf("1000之內的所有完數:
");
for(i=6;i<1000;i++){
int sum=0;
for(j=1;j<i;j++){
if(i%j==0)
sum = sum+j;
}
if(sum==i)printf("%d,",i);
}
}
輸出結果為:6,28,496
原代碼中的sum 初始化的位置是錯誤的,導致結果不正確,正確代碼請看我的回答。
完數,一般指完全數,一個自然數如果它的所有真因子(即除了自身以外的約數)的和等於該數,那麼這個數就是完全數,如:6的真因子有1 、2、3,6=1+2+3,所以6是一個完全數。
求1000以內的完數可以用C,C++、java和Pascal語言等,下面舉例java語言實現代碼。
用java編寫1000以內的完數如下:
public class PerfectNumber {public static void main(String[] args) {System.out.println("1000以內的所有完數有:");for (int i = 2; i < 1000; i++) {// 遍歷1000以內的所有整數int sum = 0;// 定義和變數for (int j = 1; j < i; j++) {if (i % j == 0) {// 滿足是i的因子,就累加sum += j;}}if (sum == i) {// 滿足因子之和等於i就列印該完數System.out.print(i + " ");}}}}Ⅲ 編寫java循環程序,找出1000以內的所有完數
publicclassTest{
publicstaticvoidmain(String[]args){
inti,j,sum;//sum用來存放因子之和
for(i=1;i<1000;i++)//對1到1000以內的數依次嘗試
{
sum=0;//給sum賦值,同時也是對上一次的值清空
for(j=1;j<=i/2;j++)//查找因子
{
if(i%j==0)//如果是因子
{
sum+=j;//把當前的因子累加到sum中
}
}
if(sum==i)//判斷是不是完數,即因子之和等於自身
{
System.out.print(i+"itsfactorsare:");//是完數,輸出
for(j=1;j<=i/2;j++)//再次找出這個完數的因子
{
if(i%j==0)//輸出各個因子
System.out.print(j+",");
}
System.out.println();
}
}
}
}
這些題網路裡面都是找得到的
Ⅳ JAVA編程題:找出1000以內的完數:一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.
include <iostream>
using namespace std;
int main() {
for (int i = 2; i <= 1000; i++) {//從2到1000的數
int sum = 0;//因子總和
for (int j = 1; (j * j) <= i; j++) {//j做除數,√n復雜度,減少一半的計算量
if (i % j == 0) {//可以整除,為其因子
sum = j + (i / j) + sum;//因子之和
}
}
if ((sum - i) == i) cout << "1000以內的完數:" << i << endl;//因子之和減去其本身(1*i也為其因子)如果等於這個數本身,則為完數
}
}
在數學領域,6是第一個完全數,也是最小的完全數。所謂完全數(又稱完美數或完備數),是一種特殊的自然數;它所有的真因子(即除了自身以外的約數)的和,恰好等於它本身。
例如6有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6;第二個完全數是28,它有約數1、2、4、7、14、28,除去它本身28外,其餘5個數相加,1+2+4+7+14=28。公元前6世紀的古希臘數學家、哲學家畢達哥拉斯是最早探究完全數的人,他已經知道6和28這兩個自然數是完全數了。
Ⅳ 用java代碼求1000之內的所有完全數
import java.util.ArrayList;
public class Testa {
public static void main( String[] args ) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for ( int i = 1; i <= 1000; i++ ) {
int k=0;
for(int j=1;j<i;j++){
if(i%j==0){
k+=j;
}
}
if(k==i){
arrayList.add( i );
}
}
System.out.println(arrayList);
}
}