c语言pta 找完数问题

c语言pta 找完数问题,第1张

完数又称为完全数,而完全数是非常稀少的,所以没有必要求两数之间的完全数,下面的程序是找出输入数以内的所有完全数。可以看到:从10000到100000之间是没有完全数的,而实际上8128的下一个完全数在输入300000后仍然没有找到,但等待的时间过长(至少有几分钟)。

#include<stdioh>

#include <limitsh>

int main(void)

{

unsigned long long i,j,srs,hj,ys[1000];

int k;

printf("  这是一个找出输入的数以内所有完全数的程序\n");

printf("  当输入数大于 100000 时,计算量较大,需等待较长时间\n\n");

printf("  请输入一个大于 3 的正整数:");

while(scanf("%llu",&srs) == 1)

{

while(getchar() != '\n')

continue;

if(srs<4)

{

printf("  输入错误!请重新输入:");

continue;

}

printf("  %llu 以内的完全数如下:\n",srs);

for(i=4;i<srs+1;i++)

{

hj=0;

k=0;

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

if(!(i%j))

{

ys[k]=j;

k++;

}

if(k)

{

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

hj+=ys[j];

if(i==hj+1)

printf("  %10llu 共计有 %2d 个因数\n",i,k+2);

}

}

printf("\n  请输入一个大于 3 的正整数:");

}

return 0;

}

我认为这样最简单……以下是求1000以内的“完数”的程序:

#include<stdioh>

main()

{

int n,k,sum;

for(n=1;n<=1000;n++)

{

sum=0;

for(k=1;k<n;k++) if(n%k==0)sum+=k;

if(sum==n)printf("%d\n",n);

}

}

运行过了……希望对你有帮助。

#include "stdioh"

#include "conioh"

main()

{

static int k[10];

int i,j,n,s;

for(j=6;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[i]);

printf("%d\n",k[n]);

}

}

getch();

}

clc

temp=0;

wanshu=0;

for j=1:10000

for k=1:j-1

if mod(j,k)==0;

temp=[temp k];

end

end

if j==sum(temp);

wanshu=[wanshu j];

end

temp=0;

end

disp(wanshu);

答案 6 28 496 8128

public class Test {

    public static void main(String[] args) {

        int i,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)            //判断是不是完数,即因子之和等于自身

           {

               Systemoutprint(i+" its factors are:   ");        //是完数,输出

            for(j=1;j<=i/2;j++)                          //再次找出这个完数的因子

            {

               if(i%j==0)                                    //输出各个因子

                Systemoutprint(j+", ");

               }

               Systemoutprintln();

            }

        }

    }

}

这些题百度里面都是找得到的

1、打开c语言编辑器,新建一个C语言空白文件:

2、然后就可以开始编写代码了,这里完数的意思就是一个数等于它的因子之和,比如6的因子为1、2、3,而6刚好是这些数之和。根据完数的定义,程序要输入一个数的范围,接着计算出所选取的整数i的因子,将各因子累加到变量s ,若s等于i,则可确认i为完数:

3、最后运行查询,输入一个范围,程序就会自动查找这个范围内的数字里有那些完数,计算完成后会将其结果打印出来:

以上就是关于c语言pta 找完数问题全部的内容,包括:c语言pta 找完数问题、怎样编一个求完数的程序啊、编写一个程序,找出6到1000之间的完数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10104561.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存