
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三位# 四位数:玫瑰花数
有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;
}
补充 五特殊值:
