㈠ 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以內的所有完數
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以內的完全數
運行結果
1000以內的完全數是:
6
28
496
總計有3個
public class Main
{
public static void main(String args[])
{
int count=0;//用來統計完全數的個數
System.out.println("1000以內的完全數是:");
for(int i=1;i<=1000;i++)
{
int sum=0;//每一次循環都重新開始累加求和
for(int j=1;j<i;j++)
{
if(i%j==0) sum+=j;//累加真因子(除i以外的因子)的和
}
if(sum==i)//輸出完全數並統計個數
{
System.out.println(i);
count++;
}
}
System.out.println("總計有"+count+"個");
}
}
㈣ 一個數如果恰好等於它的因子之和,這個數就稱為完數,編寫一個JAVA程序1000內的所有完數
源代碼如下:
#include <stdio.h>
main()
{
int i,j;
int sum;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
{
printf("%d its factors are ",i);
for(j=1;j<i;j++)
if(i%j==0)
printf("%d ",j);
}
printf(" ");
}
(4)java1000以內完數擴展閱讀
1、完全數是一些特殊的自然數,它所有的真因子即除了自身以外的約數的和即因子函數,恰好等於它本身。
2、第一個完全數是6,它有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6。第二個完全數是28。
3、有約數1、2、4、7、14、28,除去它本身28外,其餘5個數相加,1+2+4 + 7 + 14=28。後面的數是496、8128。