1、算法分析:
專注于為中小企業(yè)提供成都網站制作、成都做網站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)龍?zhí)睹赓M做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。
對指定范圍內的每一個整數a,求出其平方,判斷a是否是其平方的尾部,通常有以下方法:
通過字符串子串比較找出同構數。
為了求更高位數的同構數,可應用同構數的以下性質:一個m位同構數的尾部m-1位數也是一個同構數。道理很簡單
,a是一個m位數,a的平方數尾部的m-1位僅由a尾部的m-1位決定而與a的最高位無關。
易知一個同構數有三個:1,5,6,則二位同構數的個位數字只可能是1,5,6這三個數字。
根據這一思路,我們可應用遞推求出多位同構數串。
2.求指定區(qū)間內的同構數
程序代碼如下:
#includestdio.h
#includestdlib.h
#includestring.h
char *right(char *ms,int len); /*截取一個字符串尾部長為len個字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,10000]中的同構數:\n");
for(a=1;a=10000;a++)
{
ultoa(a,as,10); /*數a轉換為字符串,存入as*/
len=strlen(as);
ultoa(a*a,ms,10);
if(strcmp(as,right(ms,len))==0) /*比較字符串as與ms長為len的子串是否相等*/
printf("%s 其平方為 %s\n",as,ms); /*相等就是同構數,輸出結果*/
}
}
char *right(char *ms,int len) /*截取字符串尾部長為len子串的函數*/
{
int i,j;
for(i=0;i(signed)strlen(ms);ms++);
for(j=0;jlen;j++,ms--);
return ms;
}
int fun(int x)
{
int a,b=10,c=0;
a=x;
while(a/10!=0){b*=10;a/=10;} /*判斷x是幾位數*/
a=x*x;
c=(a%b==x)? 1:0;
return c;
}
1、首先在電腦中,打開visual C++ 6.0-文件-新建-文件-C++ Source File。
2、輸入預處理命令和主函數,如下圖所示。
3、定義變量并輸入數值,如下圖所示。
4、接著計算a是否是完美數,如下圖所示。
5、最后點擊頁面上方的運行,如下圖所示,就完成了。