C语言 求1000以内的完数 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3 C语言题目:一个数如果恰好等于它的因子之和,这个数就称为“完...
C\u8bed\u8a00\uff1a\u4e00\u4e2a\u6570\u5982\u679c\u6070\u597d\u7b49\u4e8e\u5b83\u7684\u6240\u6709\u56e0\u5b50\u4e4b\u548c\uff0c\u8fd9\u4e2a\u6570\u5c31\u79f0\u4e3a\u201c\u5b8c\u6570\u201d\u3002\u7f16\u5199\u7a0b\u5e8f\u627e\u51fa1000\u4e4b\u5185\u7684\u6240\u6709\u5b8c\u6570\u6e90\u4ee3\u7801\u5982\u4e0b\uff1a
#include
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("\n");
}
\u6269\u5c55\u8d44\u6599
1\u3001\u5b8c\u5168\u6570\u662f\u4e00\u4e9b\u7279\u6b8a\u7684\u81ea\u7136\u6570\uff0c\u5b83\u6240\u6709\u7684\u771f\u56e0\u5b50\u5373\u9664\u4e86\u81ea\u8eab\u4ee5\u5916\u7684\u7ea6\u6570\u7684\u548c\u5373\u56e0\u5b50\u51fd\u6570\uff0c\u6070\u597d\u7b49\u4e8e\u5b83\u672c\u8eab\u3002 2\u3001\u7b2c\u4e00\u4e2a\u5b8c\u5168\u6570\u662f6\uff0c\u5b83\u6709\u7ea6\u65701\u30012\u30013\u30016\uff0c\u9664\u53bb\u5b83\u672c\u8eab6\u5916\uff0c\u5176\u4f593\u4e2a\u6570\u76f8\u52a0\uff0c1\uff0b2\uff0b3\uff1d6\u3002\u7b2c\u4e8c\u4e2a\u5b8c\u5168\u6570\u662f28\u3002
3\u3001\u6709\u7ea6\u65701\u30012\u30014\u30017\u300114\u300128\uff0c\u9664\u53bb\u5b83\u672c\u8eab28\u5916\uff0c\u5176\u4f595\u4e2a\u6570\u76f8\u52a0\uff0c1\uff0b2\uff0b4 + 7 + 14\uff1d28\u3002\u540e\u9762\u7684\u6570\u662f496\u30018128\u3002
#include
#include
void main()
{
int m,i,s;
for(m=1;m<=1000;m++) //\u4ece1\u5f00\u59cb\u52301000\u5faa\u73af\u7ed3\u675f
{
s=0;//\u521d\u59cb\u5316\u56e0\u5b50\u4e4b\u548cs\u4e3a0
for(i=1;i<m;i++) //\u5bfb\u627e\u57281\u5230m\u4e4b\u95f4\uff0c\u6709\u591a\u5c11m\u7684\u56e0\u5b50
if(m%i==0) //\u5982\u679cm\u80fd\u6574\u9664i\uff0c\u5219i\u4e3am\u7684\u56e0\u5b50
s=s+i;//\u5c06\u56e0\u5b50\u7d2f\u52a0
if(s==m) //\u5982\u679c\u56e0\u5b50\u4e4b\u548c\u7b49\u4e8e\u8fd9\u4e2a\u6570
printf("%d\t",s);//\u8f93\u51fa
}
getch();
}
\u8fd0\u884c\u7ed3\u679c\uff1a
6 28 496
#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语言
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支持这种做法。
这是修改后的C程序:
#include <stdio.h>
void main()
{
int a,n,num,i;
for(n=1;n<=1000;n++)
{
a=n;
for(i=1;i<=n && a>0;i++)
{
if(n%i == 0)
a -= i;
}
if (a==0)
printf("%d ",n);
}
}
输出结果:
1 6 24 28 496
没太理解你的想法
while (n%i==0)
{
a-=i;
n/=i;
}
这段的意思是判断出来一个数是它的因子然后就把它除掉么?
那么这有两个问题
1.应该用if而不是while,否则会陷入死循环,一直在除1
2.这个想法本身貌似就有点儿问题,比如说18,它的因子包括1,2,3,6,9,但是如果你先除掉2在后面的判断中6就不是因子了,因子之间也有因子的关系
建议用更朴素的算法
for(i=1;i<n;i++)
{
if (n%i==0)
a-=i;
}
if (a==0)
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");
}
}
}
扩展阅读:编程求1000以内的完数 ... 一千以内的完美数 ... c#求100以内的素数 ... c语言1000以内自守数 ... c语言编写100以内素数 ... c#求1到100的素数 ... c语言求1-100素数 ... 素数判断1-100c语言程序 ... 用c#编写100以内的素数 ...