當前位置:首頁 » 編程軟體 » 自守數編程

自守數編程

發布時間: 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 瀏覽:705
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:969
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:677
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:830
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:738
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1077
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:309
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:189
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:875
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:831