c语言一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数 C语言一道编程题:一个数如果恰好等于它的因子之和,这个数就称...

作者&投稿:农俗 (若有异议请与网页底部的电邮联系)

public class five{

public static void main(String[]args){

int sum;

for(int i=1;i<=1000;i++){

sum=0;

for(int j=1;j<i;j++){

if(i%j==0){

sum=sum+j;

}

}

if(i==sum){

System.out.println(i);

}

}

}

}

运行结果:

扩展资料:

class定义和用法

class属性规定元素的类名(classname)。

class属性大多数时候用于指向样式表中的类(class)。不过,也可以利用它通过JavaScript来改变带有指定class的HTML元素。

提示和注释

注释:class属性不能在以下HTML元素中使用:base,head,html,meta,param,script,style以及title。

提示:可以给HTML元素赋予多个class,例如:<span class="left_menu important">。这么做可以把若干个CSS类合并到一个HTML元素。

提示:类名不能以数字开头!只有Internet Explorer支持这种做法。



#include<stdio.h>

int main()

int i,j,sum=1;

int b[100];

for(i=3;i<=1000;i++)

sum=1;

int k=0;

for(j=2;j<i;j++)

if( i%j==0) {sum+=j;b[k++]=j;}

if(i==sum)

{

printf("%d its factors are %d",i,b[0]);

for(int a=1;a<k; a++)

printf(",%d",b[a]);

printf("
");

}

}

扩展资料:

c语言需要说明的是:

1.一个C语言源程序可以由一个或多个源文件组成。 

2.每个源文件可由一个或多个函数组成。

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。  

4.源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-c语言



可以参考下面的代码:

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也为其因子)如果等于这个数本身,则为完数

}

}

扩展资料:

在梅森素数的基础研究方面,法国数学家鲁卡斯和美国数学家雷默都做出了重要贡献;以他们命名的“鲁卡斯-雷默方法”是目前已知的检测梅森素数素性的最佳方法。另外,中国数学家、语言学家周海中给出了梅森素数分布的精确表达式;这一研究成果被国际上命名为“周氏猜测”。

需要指出的是,完全数其实目前并不“完全”,它还有一些谜团尚未解决。例如:完全数是有限还是无穷多个,存在不存在奇完全数,这是当今数论领域的两大著名难题。这些难题与其它科学难题一样,有待人们去攻克。正如德国数论专家西格尔所言:“待到它们被完全破解时,完全数才算是真正的完全数。”

参考资料来源:百度百科-c语言



sum值 在每次进循环的时候 重新初始化一次 不然累加起来就出错了

#include <stdio.h>
void main()
{
 int num,sum=0,m;
 printf("1"); 
 for(num=2;num<=1000;num++)//控制num一直到1000 
    {
       sum = 0;//加一句这个。
     for(m=1;m<num;m++)//找出num的因子 
        {
         if(num%m==0)
         {
          sum=sum+m;//num因子之和 
         }
        }
        if(sum==num)//判断num是否为完数 
        {
         printf("%d",num);
        }
 }
 
}

试试吧



因为只需要输出完数的因子,所以如果在判断过程中保存因子,会存在极多不必要的操作;所以此处选用了在得到完数后再计算一次其因子的方式。

/*
完数:一个数的因子之和等于该数
*/
#include <stdio.h>
#include <string.h>
void main()
{
int i,j,sum=1;
for(i=3;i<=1000;i++)
{
sum=1;
for(j=2;j<i;j++)
{
if( i%j==0)
sum+=j;
}
if(i==sum)
{
printf("%3d, 因子为:",i);
for( j=2; j<i; j++ )
{
if( i%j == 0 )
printf("%3d,", j );
}
printf("\n");
}
}
}

一个c语言的题,题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编~

从1到小于这个数的所有数(或小于等于它的二分之一),在这个范围里,找能 被它整除的数,也就是取余%为0的数,累加,看看是不是等于它。如果要输出因子的话,就把因子存到数组里。

#include
int f(int n) //这里用int n,int是n的类型
{
int m, sum=0;
for(m=1; m<n; m++)
if(n%m == 0)
sum+=m;
return sum;
}
void main()
{
int n, k;
for(n=1; n<=1000; n++)
{
k=f(n);
if(k==n)
printf("%d
", n);
}
}

C语言:一个数如果恰好等于它的因子之和,这个数就称为"完数"。请编写C...
答:按照你的要求编写的求1000以内完数的C语言程序如下 include<stdio.h>int a[32],count=0;int factorSum(int x){ int i,sum=0; count=0; for(i=1;i<x;i++) if(x%i==0){ a[count]=i; sum+=i; count++; } return sum;}int main(){ int i,j; for(i=1;i<=1000...

c语言问题;题目:一个数如果恰好等于它的因子之和,这个数就称为“完 ...
答:表面看这种事情是“绝对”不会发生的,但这里确实发生了,那只能说明代码有其他漏洞,绝非只是int k[10];和 int i,j,n,s;的先后次序问题;因为没有关联的变量的声明次序是不敏感的。你把int k[10];改成int k[500];试试,我想不会再有你说的问题了。然后自己琢磨原因,琢磨不出来我再回答你...

c语言编程题 一个数如果恰好等于它的因子之和,这个数就称为完数。例
答:include<stdio.h> int main(){int i,j,s;for(i=2;i<=1000;i++){s=1;for(j=2;j<=i/2;j++)if(i%j==0)s+=j;if(s==i){ printf("%d its factors are 1 ",i);for(j=2;j<=i/2;j++)if(i%j==0)printf("%d ",j);printf("\n");} } return 0;} ...

c语言中判断完数 一个数如果恰好等于它的因子之和,这个数就称为完数...
答:include "stdio.h"include "conio.h"main(){ static int k[10];int i,j,n,s;for(j=2;j<1000;j++){ n=-1;s=j;for(i=1;i<j;i++){ if((j%i)==0){ n++;s=s-i;k[n]=i;} } if(s==0){ printf("%d is a wanshu",j);for(i=0;i<n;i++)printf("%d,",k)...

c语言题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。求...
答:m++) //从1开始到1000循环结束 { s=0;//初始化因子之和s为0 for(i=1;i<m;i++) //寻找在1到m之间,有多少m的因子 if(m%i==0) //如果m能整除i,则i为m的因子 s=s+i;//将因子累加 if(s==m) //如果因子之和等于这个数 printf("%d\t",s);//输出 } getch()(); } ...

C语言编程: 一个数如果恰好等于它的因子之和,这个数就称为完数。求100...
答:C语言编程: 一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。  我来答 1个回答 #热议# OPPO超级会员日会上线哪些专属权益?mama的号2845 2015-05-14 · TA获得超过100个赞 知道答主 回答量:298 采纳率:0% 帮助的人:34.7万 我也去答题访问个人页 关注 展开全部 ...

C语言:一个数如果恰好等于它的所有因子之和,这个数就称为“完数”。编 ...
答:源代码如下: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

C语言求1000以内的完数,一个数如果恰好等于它的因子之和,这个数就称...
答:public class five{ public static void main(String[]args){ int sum;for(int i=1;i<=1000;i++){ sum=0;for(int j=1;j

一个数如果恰好等于它的因子之和,这个数就叫做完数.用C语言编程找出100...
答:/*一个数恰好等于它的因子之和.6=1+2+3*/ include <stdio.h> /*头文件*/ define N 1000 /*搜索范围在1000以内*/ int main(int argc, char *argv[]) /*主函数*/ { int i; /*循环变量*/ for(i=1;i<=N;i++) /*循环找出小于N的所有完数并输出其因子.*/ { if(wanshu(i))...

...找出1000以内的完数:一个数如果恰好等于它的因子之和,这个数就称...
答:√n复杂度,减少一半的计算量 if (i % j == 0) {//可以整除,为其因子 sum = j + (i / j) + sum;//因子之和 } } if ((sum - i) == i) cout << "1000以内的完数:" << i << endl;//因子之和减去其本身(1*i也为其因子)如果等于这个数本身,则为完数 } } ...