C语言题目 编程 找出1000以内的所有”完数“,所谓”完数“是指一个数恰好等于它的因子和,例如6=1+2+3..

作者&投稿:兀有肯 (若有异议请与网页底部的电邮联系)
C语言题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。~

#include
#include

void main()
{
int m,i,s;
for(m=1;m<=1000;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",s);//输出
}

getch();
}

运行结果:
6 28 496

一个数,所有的真因子(即除了自身以外的约数)的和,恰好等于本身,称为完数。
所以,要确认是否为完数,只要把所有真因子相加判断即可。
于是,这个题目的编程思路为:
1 遍历1~1000;
2 对每个数,判断是否为完数,如是,则输出;
3 程序结束。
代码如下:
#include int main(){ int n, i, s; for(n = 1; n <= 1000; n ++) { s = 0; for(i = 1; i <= n/2; i ++) if(n%i == 0) s+= i;//是真因子,累加。 if(s == n) //是完数。 printf("%d,",n);//输出。 } return 0;}

#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
",i);

}

getch();

return 0;

}



 
#include<stdio.h>
void main()
{
int i,j,sum;
for(i=1;i<100;i++)
{
sum=0;
for(j=1;j<i;j++)
if(i%j==0)
sum+=j;
if(sum==i)
printf("%d是一个完数
",i);
}
}


*/
#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");
}
}
}

#include<stdio.h>

#define N 100

int main(void)

{

        int i,j,k=0,yinzi[N];

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

        {

                yinzi[99]=0;

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

                        if(i%j==0)

                                yinzi[k++]=j;

                for(j=0;j<k;j++)

                        yinzi[99]+=yinzi[j];

                if(i==yinzi[99])

                {

                        printf("%d=",i);

                        for(j=0;j<k;j++)

{

                                printf("%d",yinzi[j]);

if(j==k-1)break;

printf("+");

}

printf("
");

                }

                k=0;

       }

}




这种东西逻辑会了就OK额


淮阳县18040587588: C语言编程题:求1000以内连续和为1000的整数. -
鲜波甘风: int j=1,sub=0;此是找出了1000以后所有的连续和为1000的整数组合.for(int i=1;i<=1000;i++){ sub=sub+i; if(sub>=10000) { if(sub==10000) { 输出到j的值和i的值 那么j到i的值之间的连续加起来的和就是10000.} i=j++; }}

淮阳县18040587588: 用C语言编程找出1000以内的所有完数.(涉及知识点:for语句和if语句).一个数如果恰好等于它的因子之和,这个数就称为“完数”. -
鲜波甘风:[答案] #include void main() { int i,j,k,t,a,c,s,p,sum; int b[999]={0}; sum=0;s=0; for(i=0;i{ for(j=0;j { for(k=0;k { t=100*i+10*j+k; if(t==0) continue; for(a=1;a{ if(t%a==0) b[a-1]=a; else b[a-1]=0; } for(s=0,c=0;c { if(b[c]>0) { s=s+b[c]; } } sum=s; if(t==sum) { printf("%d its ...

淮阳县18040587588: 编程序找出1000之内的所有完数 用最基础的c语言
鲜波甘风: #include <stdio.h> int main() { int n=1000; int r,j,i; for(i=1;i<n; i++){ r = 0; for(j=1;j<i;j++){ if(i%j == 0){ r = r + j; } } if(r == i){ printf("the result is:%d\n",r); } } return 0; }

淮阳县18040587588: 用C语言找出1000以内的完数?(代码) -
鲜波甘风: #include <stdio.h> int main() { int i, j, s; for(i = 2; i<=1000; i ++) { s = 0; for(j = 1; j < i; j ++) { if(i%j == 0) s += j; } if(s == i) printf("%d\n", i); } return 0; }

淮阳县18040587588: 用C语言编写求1000内的完数... -
鲜波甘风: 你如果是想学编程,这个程序是很简单的,最好自己写写,然后自己调试一下,那样你才能进步哦.我给你贴一个代码,你自己作参考就是了哈,还有其他的写法#include<stdio.h> void main() {int n,i,a;for(n=2;n<=1000;n++){a=0;for(i=1;i<=...

淮阳县18040587588: C语言编程问题(输出1000以内所有完数) -
鲜波甘风: /*一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如6=1+2+3 编程:找出1000以内所有完数.*/#include<stdio.h> void main() { int n,a,b,s=0; for(n=1;n<=1000;n++) { for(a=1;a<n;a++) if(n%a==0)/*判断是否是因子*/ s+=a; if(s==n) printf("Result:%d\n",n); s=0;/*将s归零*/ } } /*运行结果: Result:6 Result:28 Result:496 */

淮阳县18040587588: c语言:寻找1000以内孪生素数 -
鲜波甘风: #include #define n 1000 int main(int argc, char *argv[]) {int i,j,sum,flage;for(i=2;i {flage=0;for(j=1;j<=i&&flage<=2;j++)if(i%j==0)flage++; if(flage==2)sum+=i;}printf("1000以内的素数和为:%d\n",sum); return 0; }

淮阳县18040587588: 用c语言求1000以内的素数···谢谢了···
鲜波甘风: #include"stdio. h"main(){ int i,m; int flag; for(i=2;i { flag=1; for(m=2;m { if(i%m==0) { flag=0; break; } } if(flag==1) printf("%d ",i); }} //随机产生1000个4位自然数,将其中素数降序排列后输出:需要很长的程序,你另外提问一个吧,可以向我求助,如果没分了也不要紧.

淮阳县18040587588: c语言:编程找出1000以内的所有完数,并输出使该数成为完全数的因子,帮忙在找错误,谢谢了 -
鲜波甘风: #include void main(){ int i; for( i=1;i<1000;i++ ) { int s=1,j; for( j=2;j

淮阳县18040587588: C语言问题:请找出小于1000的回文素数
鲜波甘风: 进行两次循环第一次是进行加一第二次循环数一直除1+1直到加到比本身小1如果能整除进行下一次循环反之输出返回进行下一次循环这就是思路如果要例子也可以补充下问题答案补充#include#includeint main(void) { int i; /*外循环*/ int j; /*内循环*/ int flag; /*素数标志,flag为1则此数为素数*/ flag = 0; //int n; i = 2; while( i

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网