導航:首頁 > 編程知識 > 110的階乘怎麼編程

110的階乘怎麼編程

發布時間:2025-08-14 04:27:33

1. 請編寫程序,輸入正整數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;
}

閱讀全文

與110的階乘怎麼編程相關的資料

熱點內容
做系統映像文件路徑怎麼選擇 瀏覽:901
繪制標准五角星使用工具 瀏覽:575
多個圖片合並成一個文件怎麼合並 瀏覽:616
先序遍歷代碼 瀏覽:963
mm003網站換哪個網址了 瀏覽:457
網站怎麼做到批量發新聞 瀏覽:123
手機陌陌聊天文件是哪個 瀏覽:566
小米如何切換4g網路制式 瀏覽:845
如何將文件隱藏到圖片 瀏覽:278
泉州哪些租房子app靠譜 瀏覽:800
少兒編程是什麼行業 瀏覽:768
純小白怎麼開始學編程 瀏覽:659
微信多次驗證請求 瀏覽:557
wps文件咋發微信 瀏覽:352
110的階乘怎麼編程 瀏覽:266
從qq里怎麼傳文件 瀏覽:285
jdg格式文件怎麼轉cad 瀏覽:949
蘋果手機怎麼調成墨屏 瀏覽:205
有什麼編程問題群 瀏覽:34
plc的st編程是什麼 瀏覽:488

友情鏈接