对数学黑洞的好奇

123黑洞
6174黑洞
自幂数
如来神掌
考拉兹猜想、冰雹猜想、角谷猜想、(4-2-1循环)

123黑洞

在这里插入图片描述
在这里插入图片描述

自己凑合敲了一下,没有敲100以下的 ?

/*     123数学黑洞,即西西弗斯串 		新数:将答案按 “偶-奇-总” 的位序,排出得到新数为:5510。*/
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<windows.h>
#include<stdlib.h>
using namespace std;
typedef long long ll;
ll weishu(ll a)
{
	ll i=0;
	while(a)
	{
		a/=10;
		i++;
	}
	return i;
}
int main()
{
	ll n,m;
	printf("输入任意一个大于100数,记录它的偶数a与奇数个数b,与位数c组成一个新数\nabc如此循环最后得到123\n");
	while(~scanf("%lld",&n),n!=0)
	{
		if(n == 123) break;
		while(true)
		{
			ll ji=0,ou=0,zong=0;
			while(n)
			{
				ll s=n%10;
				if(s%2==1) ji++;
				else ou++;
				zong++;
				n/=10;
			}				//	system("pause");
			printf("偶数个数:%lld  奇数个数:%lld 总位数:%lld ",ou,ji,zong);
			ll jiw=weishu(ji);
			ll zongw=weishu(zong);
			ll ouw=jiw+zongw;
			while(ouw!=0)
			{
				ou *= 10;
				ouw --;
			}system("pause");
			while(zongw!=0)
			{
				ji*=10;
				zongw--;
			}//system("pause");
			n=ou+ji+zong;
			printf("组成新数为:%lld\n",n);
			if(n == 123) break;system("pause");
		}
	}
	return 0;
}

6174黑洞

在这里插入图片描述

行?**?

C代码:

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
void insertSort(int r[], int len) {
  int i, k, tmp;
  for(i = 1; i < len; i++) {
    k = i - 1;
    tmp = r[i];
    while(k >= 0 && r[k] > tmp) {
      r[k+1] = r[k];
      k--;
    }
    r[k+1] = tmp;
  }
}
 
int main() 
{
  int N, count, end, s;
  int r[4];
  int max, min;
  printf("\n************请输入一个任意的四位正整数(全相同的除外,如1111):************\n________\n\n");
  while(scanf("%d", &N),N/1000!=0)
  {
  		count = 0; end = 0;
	  s = N;
	  while (end != 6174) {
	    r[0] = s % 10;
	    r[1] = s / 10 % 10;
	    r[2] = s / 100 % 10;
	    r[3] = s / 1000;
	    insertSort(r, 4);
	    max = 1000 * r[3] + 100 * r[2] + 10 * r[1] + r[0];
	    min = 1000 * r[0] + 100 * r[1] + 10 * r[2] + r[3];
	    end = max - min;
	    count++;
	    printf("\t第%d步:%d-%d=%d\n\n\n", count, max, min, end);
	    s = end;
	  }
	  printf("\t%d一共经过了%d步得到了6174\n\n\n\n\n", N, count);
	  system("pause");
	  system("cls");
	  printf("\n************请输入一个任意的四位正整数(全相同的除外,如1111):************\n________\n\n");
 
  }
  return 0;
}

下面是C++代码:


#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
 return a>b;
}///递减排序
void to_array(int n,int num[]){///将n的每一位存到num数组
  for(int i=0;i<4;i++){
    num[i]=n%10;
    n/=10;
  }
}
int to_number(int num[]){///将num数组转换为数字
   int sum=0;
   for(int i=0;i<4;i++)
   {
       sum=sum*10+num[i];
   }
   return sum;
}
int main()
{
    int n,minm,maxm;
    scanf("%d",&n);
    int num[5];
    while(1){
        to_array(n,num);
        sort(num,num+4);
        minm=to_number(num);
        sort(num,num+4,cmp);
        maxm=to_number(num);
        n=maxm-minm;
        printf("%04d - %04d = %04d\n",maxm,minm,n);
        if(n==0||n==6174) break;
    }
    return 0;
}

自幂数

三位数:水仙花 只有153、370、371和407三位

153


# 四位数:玫瑰花数

有1634、8208、9474三位
在这里插入图片描述

五位数:五角星数

五角星数是指五位数各位上的数字的5次方之和等于本身的数 10000 - 99999/

#include<stdio.h>
void FindWuJiaoXingNum() 
{ 
	int a,b,c,d,e; 
	a = b = c = d = e = 0; 
	for(int i = 10000; i <= 99999; i++) 
	{ 
		a = i % 10; 
		b = (i / 10) % 10; 
		c = (i / 100) % 10; 
		d = (i / 1000) % 10; 
		e = i / 10000; 
		if((a*a*a*a*a + b*b*b*b*b + c*c*c*c*c + d*d*d*d*d + e*e*e*e*e) == i) 
		{ 
			printf("%d ", i); 
		} 
	} 
	printf("\n"); 
}
int main()
{
    FindWuJiaoXingNum();//输出 54748 92727 93084 三个五角星数
	return 0; 
}

如来神掌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


考拉兹猜想、冰雹猜想、角谷猜想、(4-2-1循环)

牛人啊
简单C++代码:

#include<cstdio>
#include<iostream>
using namespace std;
int a[200],i=0,j=0;
int ser(int e)
{
	if(a[i]==2&&a[i-1]==4&&a[i-2]==1) j++;//方便看出循环 
	if(j==5) return 0;
	if(e&1)
	{
		a[i]=e*3+1;
		cout<<a[i];
	}
	else
	{
		a[i]=e/2;
		cout<<a[i];	
	}
	cout<<endl;
	return ser(a[i++]);
}
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int f=ser(n);
		puts("");
	}
	return 0; 
}

补充 五特殊值:
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流星蝴蝶没有剑

篮球弹弹弹

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值