计算1~n之间的特殊数

1)任务描述

编程实现:计算1~n之间的特殊数:

①回文数;②素数;③亲密数;④水仙花数。

(2)功能要求

①采用模块化程序设计方法,每个特殊数的计算用一个函数实现。

②主程序设计一个功能菜单,通过菜单调用各个子函数,格式如下:

0.退出

1.回文数

2.素数

3.亲密数

4.水仙花数

③设计并输出1~n之间的各种特殊数的判断与输出函数

(3)设计提示

亲密数,如果整数A的全部因子(包括1,不包括A本身)之和等于整数B,整数B的全部因子(包括1,不包括B本身)之和等于整数A,则称整数A与B

为亲密数。

 

#include<stdio.h>

void huiwen();

void sushu();

void qinmi();

void shuixian();

int main()

{

          intn;

   while(1)

   {

   printf("\n0退出\n1.回文数\n2.素数\n3.亲密数\n4.水仙花数\n");

   scanf("%d",&n);

   switch(n)

   {

        case 0:printf("");return;

        case 1:huiwen();break;

        case 2:sushu();break;

        case 3:qinmi();break;

        case 4:shuixian();break;

   }

   }

}

 

void huiwen()

{

          intx,sum,y,n;

          printf("请输入N范围内的数求回文数:");

          scanf("%d",&n);

          printf("1到%d中的回文数为:",n) ;

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

   {

        sum=0;

        y=x;

          while(x)

   {

        sum=sum*10+x%10;

        x/=10;

   }

        if(y==sum)

        printf("%d",sum);

}

}

void sushu()

{

          inti,j,n;

          printf("请输入N范围内的数求素数:");

          scanf("%d",&n);

          printf("1到%d之间的素数为:",n);

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

          {

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

                                  {

                               if(i%j==0)

                                   break;

                                  }

                               if(j>=i)

                           printf("%d  ",i);

          }

}

 

void qinmi()

{

          inta,b,j,i,n;

          printf("请输入N范围内的数求亲密数:") ;

          scanf("%d",&n);

          printf("亲密数为:");

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

          {

                       for(b=0,i=1;i<=a/2;i++)

                              if(!(a%i))

                                b+=i;

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

                              if(!(b%i))

                                j+=i;

                            if(j==a&&a<b)

                       printf("%d与%d  ",a,b);

          }

}

 

void shuixian()

{

          inta,b,c,i,n;

          printf("请输入N范围内的数求水仙花数\n注:N在三位数以上才有水仙花数:");

          scanf("%d",&n);

printf("水仙花数为:");

          if(n<1000&&n>100)

          for(i=100;i<=n;i++)

          {

                               a=i/100;

                             b=(i/10)%10;

                               c=i%10;

                       if(a*a*a+b*b*b+c*c*c==i)

                          printf("%d  ",i);

          }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值