当前位置:首页 » 编程软件 » 自守数编程

自守数编程

发布时间: 2023-01-17 03:13:18

❶ 求教打印出10000以内的所有自守数的编程代码如何编写,大神们

#include<stdio.h>

int main()

{int i,k,pf;

for(int i=1;i<=10000;i++)

{int k=i;

pf=k*k;

while(k!=0)

{if(pf%10!=k%10)break;

k=k/10;

pf=pf/10;

}

if(k==0)

printf("%d ",i);

}

return 0;

}

❷ 编程题,使用函数的方法求1000以内的自守数

#include "stdio.h"

void fun(void)
{
unsigned int i;
for(i=2;i<10;i++)
{
if((i*i)%10==i)
printf("%d is a pascal under 1000.\n",i);
}
for(i=10;i<100;i++)
{
if((i*i)%100==i)
printf("%d is a pascal under 1000.\n",i);
}
for(i=100;i<=1000;i++)
{
if((i*i)%1000==i)
printf("%d is a pascal under 1000.\n",i);
}
}

main()
{
fun();
}
随便写的

❸ 编写程序,求2—999中的同构数(也叫自守数)及其个数。

答案在下面你可以看看:#include<stdio.h>
#include<math.h>
void main()
{
long int a,b,h,i,j,f=0,d;
printf("正在计算...\n");
for(i=2;i<=999;i++)
{
a=i*i;
for(j=1;j<=3;j++)
{
d=a%10;
a=a/10;
f=f+d*pow(10,j-1);
if(f==i)
{
printf("%ld\n",i);
}
if(a==0)
break;

}
f=0;
}

}

❹ 道c语言的题目 编程求100以内的所有的自守数,自守数是指一个数的平方

#include<stdio.h>

int main()

{int i,j;

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

{j=i*i;

if(i<10&&j%10==i)printf("%d ",i);

else if(j%100==i)printf("%d ",i);

}

return 0;

}

❺ 零基础自学算法看什么书

既然是自学,途径无非就是看书和看视频两种途径。这些资料,今天已经非常的丰富了。每个人都可以有很多选择。
但这就带来另一个问题:究竟该从什么书,什么视频开始呢?
巧了!!我用过一个学习算法的网站,只适合小白。哈哈。
你可以搜索 1024fun乐学编程 让后学习其中的乐学编程课程
就是,免费!,缺点就是只有基础课程。你去看一下。

❻ 求出从m到n之间的所有的自守数,并且按照每行5个整数,如何用C++编程

#include<iostream>
using namespace std;
int fun(int m,int n)
{
int count=0;
for(long i=m;i<=n;i++)
{
if(i>0&&i<=9)
{
int temp1=i*i;
int temp2=temp1%10;
if(i==temp2)
{
count++;
cout<<i<<"*"<<i<<"="<<i*i<<" ";
if(count%5==0)
cout<<endl;
}
}
if(i>=10&&i<=99)
{
int temp3=i*i;
int temp4=temp3%100;
if(i==temp4)
{
count++;
cout<<i<<"*"<<i<<"="<<i*i<<" ";
if(count%5==0)
cout<<endl;
}
}
if(i>=100&&i<=999)
{
int temp5=i*i;
int temp6=temp5%1000;
if(i==temp6)
{
count++;
cout<<i<<"*"<<i<<"="<<i*i<<" ";
if(count%5==0)
cout<<endl;
}
}
if(i>=1000&&i<=9999)
{
int temp7=i*i;
int temp8=temp7%100;
if(i==temp8)
{
count++;
cout<<i<<"*"<<i<<"="<<i*i<<" ";
if(count%5==0)
cout<<endl;
}
}
}
return 0;

}
int main()
{
int m,n;
cout<<"input the m and n:"<<endl;
cin>>m>>n;
fun(m,n);
cout<<endl;
return 0;
}

❼ 用c语言编写程序,用数组输出Fibonacci数列前20项

1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。

7、输出最后的结果。

❽ 急求:c语言编程题解答

1、
main()
{
long i;
for(i=1;i<=200000;i++)
if(i<10&&i*i%10==i)
printf("%d ",i);
if(i<100&&i>=10&&i*i%100==i)
printf("%d ",i);
if(i>=100&&i<1000&&i*i%1000==i)
printf("%d ",i);
if(i>=1000&&i<10000&&i*i%10000==i)
printf("%d ",i);
if(i>=10000&&i<100000&&i*i%100000==i)
printf("%d ",i);
if(i>=100000&&i<1000000&&i*i%1000000==i)
printf("%d ",i);

}
3、
main()
{
long i;
for(i=1000;i<=9999;i++)
if(i==(i%100+i/100)*(i%100+i/100))
printf("%d ",i);

}
4、#include <stdio.h>
main()
{
int i, j, count;
puts("the result is:\n");
printf("time red ball white ball black ball\n");
count = 1;
for (i = 0; i <= 3; i++) /*红球数量范围0到3之间*/
for (j = 0; j <= 3; j++) /*白球的数量范围0到3之间*/
if ((8-i - j) <= 6) /*判断要取黑色球的数量是否在6个以内*/
printf("%3d%8d%9d%10d\n", count++, i, j, 8-i - j); /*输出各种颜色球的数量*/
return 0;
}
7、
#include <stdio.h>
int palind(char str[],int k, int i)/*自定义函数检测是否为回文字符串*/
{
if(str[k]==str[i-k]&&k==0)/*递归结束条件*/
return 1;
else if(str[k]==str[i-k])/*判断相对应的两个字符是否相等*/
palind(str,k-1,i); /*递归调用*/
else
return 0;
}

main()
{
int i=0,n=0;/*i记录字符个数,n是函数返回值*/
char ch,str[20];
printf("\nplease input string:\n");
while ((ch=getchar())!='\n')
{
str[i]=ch;
i++;
}
if(i%2==0)/*当字符串中字符个数为偶数时*/
n=palind(str,(i/2),i-1);
else
n=palind(str,(i/2-1),i-1);/*当字符串中字符个数为奇数时*/
if(n==0)
printf("not palindrome");/*当n为0说明不是回文数,否则是回文数*/
else
printf("palindrome");
getch();
}

❾ 正整数n若是它平方数的尾部,则称n为同构数。例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76

十进制平方自守数(自同构数)定义:
如果某个数的平方的末尾极为数等于这个数,那么就称这个数为自守数。
性质一:
n位的自守数,从首位开始去除任意位,得到的仍是自守数。
性质二:
N位的自首数只有两个,一个是5的M(M=2N?)次方的末N位,即5^m mod 10^N
另一个是10^N+1减去刚才那个数,即-5^m+1 mod 10^N

在下面介绍的来自网络用户l4m2space的方法中,罗列出了500位的尾数为5的自守数。

最完美的方法之一:(来自网络用户l4m2space)
Const Dig = 1000
Function ChengFa(ByVal M As String, ByVal N As String) As String
'用于大数相乘
Dim A&(), B&(), S&()
ReDim A(Len(M)), B(Len(N)), S(Len(M) + Len(N) + 1)
M = StrReverse(M)
For I = 1 To Len(M)
A(I) = Val(Mid(M, I, 1))
Next
N = StrReverse(N)
For I = 1 To Len(N)
B(I) = Val(Mid(N, I, 1))
Next

For I = 1 To Len(M)
For J = 1 To Len(N)
S(I + J) = S(I + J) + A(I) * B(J)
Next
Next
For I = 2 To Len(M) + Len(N) + 1
If S(I) > 9 Then
S(I + 1) = S(I + 1) + S(I) \ 10
S(I) = S(I) Mod 10
End If
Next
Do Until I <= 2
I = I - 1
ChengFa = ChengFa & S(I)
Loop
End Function
Private Sub Form_Load()
Dim A$, I&, T#
T = Timer
A = 5
For I = 1 To Dig
A = Right(ChengFa(A, A), Dig)
Debug.Print I
DoEvents
Next
Debug.Print A
Debug.Print Timer - T
End
End Sub

程序运行结果:8212890625
程序运行参考时间:61.186593749997 s

另摘录几个网上的答案,供参考。
方法一:
Private Sub Form_click()
For k = 0 To 2000
If k = CInt(Right(CStr(k ^ 2), Len(CStr(k)))) Then Print k
Next k
End Sub

方法二:
Private Sub Command1_Click()
For i = 0 To 2000
j = i * i
k = i
Do While k > 0 And k Mod 10 = j Mod 10
k = k \ 10
j = j \ 10
Loop
If k = 0 Then Print i
Next i
End Sub

方法三:来自网络用户bz3zwy
注:也就是已知n为自守数,只要确定其前面再加的一个数字即可。于是可得如下算法:

Option Explicit
Const Max& = 8
Dim a#(Max), c#(Max)
Dim i&, total&, S#
Private Sub Command1_Click()
a(0) = 1
For i = 1 To Max
a(i) = a(i - 1) * 10
Next
c(0) = 0
total = 0
work (1)
End Sub

Sub work(i&)
Dim j&
If i = Max Then Exit Sub
For j = 0 To 9
c(i) = a(i - 1) * j + c(i - 1)
S = c(i) * c(i)
If S - Int(S / a(i)) * a(i) = c(i) Then
If j > 0 Then
total = total + 1
Print total; c(i); S
End If
work (i + 1)
End If
Next
End Sub

方法四:来自网络用户bz3zwy,博主称,由 仙剑魔 (福尔魔剑(HolMoJan)) 提供
[原理分析]:
假设a为n位十进制数
若a为自守数,则a*a mod 10^n=a
令p=10^n,k=a*a\p
则a*a=k*p+a
即a*(a-1)=k*p=k*10^n
于是得出判定依据
如果a*(a-1)内2,5的因子数均>=n,则a为自守数
a和a-1,一个奇数一个偶数
所以2是完全由偶数提供的
即偶数必定是2^n*t的形式
刚才说了a和a-1是一奇数一偶数
2的因子全在偶数里
那么若偶数里同时有5的因子,可能吗?
假设一个数字(0除外)末尾有m个0,那么他平方后末尾就会有2m个0
所以可以得出结论:偶数里没有因子5
即因子5全部在奇数里
则奇数必定是5^n*r的形式
[编程者感言]
其实数学相关的题目
如果能推导出有用的信息以及结论
就能得到一些简单快速的算法
一开始只是试着算下的
直到推出这个a*(a-1)=k*p=k*10^n式子的时候我觉得可能会有用
后来讨论出了2,5因子的情况,算法就基本成型了
其实这里用基2也能算,只要交换下i,j的累乘值
但是可以发现基5的速度快得多,省去了不少计算

[基5的测试代码]
Dim n As Long, t As Long, i As Long, j As Long, a As Long
i = 1
j = 1
Print 0
For n = 1 To 7
i = i * 5
j = j * 2
For t = (10 ^ (n - 1) - 1) \ i + 1 To (10 ^ n - 1) \ i
a = i * t
If (a + 1) Mod j = 0 Then
Print a + 1
End If
If (a - 1) Mod j = 0 Then
Print a
End If
NextNext

❿ 请编写程序,输入正整数n,1<n<50000, 输出小于n的所有 1.完全数、 2.亲密数、 3.水仙花数、 4.阶乘和数、 5

请编写程序,输入正整数n,1<n<50000, 输出小于n的所有
1.完全数、
2.亲密数、
3.水仙花数、
4.阶乘和数、
5.自守数、
6.孪生素数,
7.黑洞数。
分析:
1.完全数是恰好等于自身的因子之和的数,X如6是,因为6=1*2*3=1+2+3;
2.亲密数是两个正整数,每个全部因子之和等于对方(因子中只不计本身),X如220和284是, 因为220的全部因子是1,2,4,5,10,11,20,22,44,55,110,和为284,而284的全部因子是1,2,4,71,142,和为220;
3.水仙花数是恰好等于自身各位数字立方和的数,X如153是,因为153=13+53+33;
4.阶乘和数是恰好等于自身各位数字阶乘的和的数,X如145是,因为145 = 1!+4!+5!;
5.自守数是平方后尾部数字是自身的数,X如9376是,因为93762=87909376;
6.孪生素数是差2的两个素数,X如197和199。
7.黑洞数又称陷阱数,是经有限次“重排求差”操作达到的不再改变的数,“重排求差”操作是将组成一个数的各位数字重排得到的最大数减去最小数,例如207,“重排求差”操作序列是:702-027=693,963-369=594,954-459=459,再做下去不变了。再用208算一次,也停止到495,所以495是三位黑洞数
程序:
#include "stdio.h"
#include "math.h"
int fun(int n)
{//求n的所有因数和
int sum=1,i;
for(i=2;i<n;i++)if(n%i==0)sum=sum+i;
return sum;
}
int jiecheng(int n)
{//求n的阶乘
int num=1,i;
for (i=2;i<=n;i++)num*=i;
return num;
}
int Prime(int n)
{//判断n是否是素数
int i=3;
while(i<=sqrt(n))if(n%i++==0)return 0;
return 1;
}
void wanquanshu(int n)
{//完全数
int i,count=0;
printf("完全数:\n");
for(i=0;i<=n;i++)
{
if(i==fun(i))
{
printf("%-5d ",i);
if(++count%5==0)printf("\n");
}
}
if (count%5!=0) printf("\n");
}
void qinmishu(int n)
{//亲密数
int i,temp,count=0;
printf("亲密数:\n");
for (i=0;i<=n;i++)
{
temp=fun(i);
if (temp>i&&i==fun(temp))
{
printf("(%d,%d) ",i,temp);
if (++count%5==0)printf("\n");
}
}
if (count%5!=0) printf("\n");
}
void shuixianhua(int n)
{//水仙花数
int i,m=3,sum,count=0,temp;
printf("水仙花数:\n");
for(i=100;i<=n;i++)
{
if(999<i&&i<10000)m=4;
if(9999<i&&i<100000)m=5;
temp=i;
sum=0;
while (temp)
{
sum+=(int)pow(temp%10,m);
temp/=10;
}
if (sum==i)
{
printf("%-5d ",i);
if(++count%5==0)printf("\n");
}
}
if (count%5!=0) printf("\n");
}
void jiechengheshu(int n)
{//阶乘和数
int i,count=0,temp,sum;
printf("阶乘和数:\n");
for(i=0;i<=n;i++)
{
sum=0;
if (i==0)sum=jiecheng(i);
else
{
temp=i;
while(temp)
{
sum+=jiecheng(temp%10);
temp/=10;
}
}
if (sum==i)
{
printf("%-5d ",i);
if(++count%5==0)printf("\n");
}
}
if (count%5!=0) printf("\n");
}
void zishoushu(int n)
{//自守数
int i,count=0,temp,t;
long num;
printf("自守数:\n");
for(i=0;i<=n;i++)
{
num=i*i;
t=10;
temp=i/10;
while(temp)
{
t*=10;
temp/=10;
}
if (num%t==i)
{
printf("%-5d ",i);
if(++count%5==0)printf("\n");
}
}
if (count%5!=0) printf("\n");
}
void luanshengsushu(int n)
{//孪生素数
int i,count=0;
printf("孪生素数:\n");
for(i=3;i<=n-2;i+=2)
{
if (Prime(i)&&Prime(i+2))
{
printf("(%d,%d) ",i,i+2);
if (++count%5==0)printf("\n");
}
}
if (count%5!=0) printf("\n");
}
int main()
{
int n;
printf("输入n:");
scanf("%d",&n);
wanquanshu(n);
qinmishu(n);
shuixianhua(n);
jiechengheshu(n);
zishoushu(n);
luanshengsushu(n);
return 0;
}

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:835
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1098
python中的init方法 发布:2025-10-20 08:17:33 浏览:805
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:969
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:859
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1211
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:431
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:312
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:987
python股票数据获取 发布:2025-10-20 07:39:44 浏览:955