当前位置:首页 » 编程语言 » c语言自守数

c语言自守数

发布时间: 2022-06-24 09:20:21

① 判断自守数并输出(c语言

#include <stdio.h>int main(){
long mul,number,k,ll,kk;scanf("%ld",&number);for(mul=number,k=1;(mul/=10)>0;k*=10);/*由number的位数确定截取数字进行乘法时的系数k*/kk=k*10; /*kk为截取部分积时的系数*/mul=0; /*积的最后n位*/ll=10; /*ll为截取乘数相应位时的系数*/while(k>0){mul=(mul+(number%(k*10))*(number%ll-number%(ll/10)))%kk;/*(部分积+截取被乘数的后N位*截取乘数的第M位),%kk再截取部分积*/k/=10; /*k为截取被乘数时的系数*/ll*=10;}if(number==mul) /*判断若为自守数则输出*/printf("%ld 是自守数",number);elseprintf("%ld 不是自守数",number);}

② C语言自守数问题

90625和109376两个数的平方溢出了,变成了负数,当然会出错
另:32位的vc、vs等许多编译器中long和int的位数相同(即能表示的范围相同),可以将上面的long改为long long或__int64

③ C语言判断自守数

程序已经修改运行通过:

#include <stdio.h>

int main()

{

long a,b,i=1;

scanf("%ld",&a);

b=a;

do

{

b=b/10;

i*=10;

}while(b>0);

if(a*a%i==a)

printf("Yes ");

else

printf("No ");

return 0;

}

④ c语言自守数 #include <stdio.h> void main(){ int n,m,k=1; scanf("%d",&n); m=n; while(m){k*=10;m/=10;

实际就是按照输入是几位,然后取输入数平方的位数,如果相等就是自守数
while(m){k*=10;m/=10;}
是为了计算输入数n的位数。如输入数为2位(例25),则k=100,然后利用100和输入数的平方取余如果相等if (n*n%k==n)就是自守数。
例:输入数为:25;则k=100
25*25%100=25

⑤ C语言关于自守数的字典序输出

#include<stdio.h>
longRe0(longa);
intFact(inta);
main()
{
longarray[1000];
charstr[1000][1000];
chart[1000];
intm=0;
intk=0;
intj;
longp=0,chino,i,guess;
scanf("%ld",&chino);
for(i=1;i<=chino;i++)
{
guess=Re0(i);
if(guess==i)
{

array[k++]=i;

}
}
for(i=0;i<k;i++)
{
sprintf(str[i],"%d",array[i]);
}
for(i=0;i<k-1;i++)//将字符串排序
{
for(j=0;j<k-1-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);

}
}
for(i=0;i<k;i++)//输出
{
if(i==k-1)
printf("%s",str[i]);
else
printf("%s",str[i]);
}
}

intFact(inta)
{
if(a==0||a==1)
return1;
elseif(a>1)
returna*Fact(a-1);
}
longRe0(longa) //计算各个位数之和
{
longsum;
intA,B,C,D,E; //分别为个位、十位、百位、千位、万位
if(a<10)
returnFact(a);
elseif(a>=10&&a<100)
{
A=a%10;
B=a/10;
sum=Fact(A)+Fact(B);
returnsum;
}
elseif(a>=100&&a<1000)
{
A=a%10;
B=a%100/10;
C=a/100;
sum=Fact(A)+Fact(B)+Fact(C);
returnsum;
}
elseif(a>=1000&&a<10000)
{
A=a%10;
B=a%100/10;
C=a%1000/100;
D=a/1000;
sum=Fact(A)+Fact(B)+Fact(C)+Fact(D);
returnsum;
}
elseif(a>=10000&&a<100000)
{
A=a%10;
B=a%100/10;
C=a%1000/100;
D=a%10000/1000;
E=a/10000;
sum=Fact(A)+Fact(B)+Fact(C)+Fact(D)+Fact(E);
returnsum;
}
}

⑥ C语言 自守数。任意输入一个自然数,判断是否自守数并输出

#include<stdio.h>
void main()
{
int x,y,z;
scanf("%d",&x);
y=x*x;
z=y-x;
if (z%10==0)
printf("%d yes %d",x,y);
else
printf("%d no %d",x,y);
}

⑦ 用C语言编译程序:求自守数

#include
int
main()
{
int
m,n;
printf("输入m,n:");
while(1)
{
scanf("%d
%d",&m,&n);
if(m<=10||m>=200000
||
n<=10||n>=200000)
printf("输入错误,请重新输入:\n");
else
break;
}
if(m>n)
{
m-=n;
n+=m;
m=n-m;
}
printf("%d到%d之间的自守数有:\n",m,n);
int
i;
int
temp;
int
count=0;
while(m<=n)
{
temp
=
m*(m-1);
i=1;
while(i<=m)
i*=10;
if(temp%i==0)
{
count++;
printf("%7d",m);
if(count%5==0)
printf("\n");
}
m++;
}
printf("\n");
return
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;

}

⑨ c语言自守数

主函数如下写就可以了。但我看着你的自定义函数是错误的——

intmain(intargc,char*argv[]){
intn,t;
for(t=0,n=1;n<10000;n++)
if(isAutomorphic(n))
printf(++t%5?"%8d":"%8d ",n);
printf(" ");
return0;
}

⑩ 用c语言编译程序:求自守数(有一定范围)。注释里标好了问题

上一步k值为log10(i)+1,即变量i十进制表示的位数

通过累乘,将m值赋值为为i的十进制最高位的表示,用于下面的a%=m

如i值为[100,999]区间,则m=100;i值为[10,99]区间,则m=10

热点内容
安卓如何鉴别手机真假 发布:2025-02-05 14:28:15 浏览:119
ffmpeglinux编译 发布:2025-02-05 14:28:04 浏览:544
服务器如何做界面 发布:2025-02-05 14:27:23 浏览:290
访问学者单位推荐意见 发布:2025-02-05 14:13:05 浏览:853
微信密码锁忘了怎么办 发布:2025-02-05 14:11:07 浏览:311
web是什么文件夹 发布:2025-02-05 14:11:05 浏览:235
对信访问题调查 发布:2025-02-05 14:09:39 浏览:984
singlephp 发布:2025-02-05 14:09:24 浏览:774
数据库的字段命名规则 发布:2025-02-05 13:53:16 浏览:684
固定ip自建服务器访问 发布:2025-02-05 13:53:03 浏览:741