㈠ 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。