数学趣题二

1.连续整数固定和问题
题目要求:编写一个程序,找出一个数的全部的连续整数固定和。所谓一个数n的连续整数固定和,就是指存在a1,a2,...an,其中,ai+1比ai大1,使得a1+a2+...+an=n。这样,a1,a2,...,an称为n的一个连续整数固定和。例如27的全部的连续整数固定和有3组:2+3+...+7=27;8+9+10=27;13+14=27。本题就是要找出任意输入的整数n的全部的连续整数固定和。
程序代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void cntnsIntSum(int num)//连续整数固定和判断
{
 int i,j,sum=0;
 for(i=1;i<num;i++)
 {
  j=i;
  while(sum<num)
  {
   sum=sum+j;
   j++;
  }
  if(sum==num)
   printf("%d+...%d=%d  ",i,j-1,num);
  sum=0;//每次循环结束都需要重新初始化sum
 }
}
main()
{
 int num;
 printf("Please input a number:/n"); 
 scanf("%d",&num);
 printf("it can change to:/n");
 cntnsIntSum(num);
}
2.表示成两个数的平方和
题目要求:已知一个正整数N,编写一个程序,找出所有满足X*X+Y*Y=N的正整数对X和Y。
程序代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void getXY(int num)
{
 int i,j;
 for(i=1;i<=sqrt(num);i++)
  for(j=i;j<=sqrt(num);j++)
  {
   if(i*i+j*j==num)
    printf("%d*%d+%d*%d=%d ",i,i,j,j,num);
  }
}
main()
{
 int num;
 printf("Please input a number:/n"); 
 scanf("%d",&num);
 printf("it can change to:/n");
 getXY(num);
}
3.具有特殊性质的数
题目要求:有这样一个4位数abcd,它具有这样的性质abcd=(ab+cd)*(ab+cd)。其中,ab和cd为两个2位数,求这个4位数abcd。
程序代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void func()
{
 int a,b,c,d;
 for(a=1;a<=9;a++)
  for(b=0;b<=9;b++)
   for(c=0;c<=9;c++)
    for(d=0;d<=9;d++)
    {
     if(1000*a+100*b+10*c+d==((10*a+b)+(10*c+d))*((10*a+b)+(10*c+d)))
      printf("%d%d%d%d  ",a,b,c,d);
    }
}
main()
{
 printf("There are following numbers according with the condition:/n"); 
 func();
}
4.验证角谷猜想
题目要求:角谷猜想的内容为:任意给定一个自然数,若它为偶数则除以2,若它为奇数则乘以3加1,得到一个新的自然数,按照这样的计算方法计算下去,若干次后得到的结果必然为1.编写程序对角谷猜想的正确性加以验证。
程序代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void func(int n)
{
 int count;
 while(n!=1 && count<=1000)
 {
  if(n%2==0)
  {
   printf("%d/2=",n);
   n=n/2;
   printf("%d/n",n);
  }
  else if(n%2==1)
  {
   printf("%d*3+1=",n);
   n=n*3+1;
   printf("%d/n",n);
  }
  count++;
  if(n==1 && count<=1000)
   printf("This natural number is according to JiaoGu Guess/n");
 }
}
main()
{
 int n;
 printf("Please input a number to vertify:/n"); 
 scanf("%d",&am

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值