如何用c语言求2~1000中的守形数??
答案:4 悬赏:30 手机版
解决时间 2021-03-27 11:00
- 提问者网友:世勋超人
- 2021-03-27 04:05
如何用c语言求2~1000中的守形数??
最佳答案
- 五星知识达人网友:长青诗
- 2021-03-27 04:42
守形数的概念:
若正整数n是它的平方数的尾部,则称n为守形数,又称同构数。
根据定义,可以得到计算的思路。
1 对于范围内的每个数值,计算其平方;
2 根据原数的位数,截取数值的尾部;
3 将数值的尾部与原数比较,如果相等则为守形数。
遍历需要的范围,即2-1000,逐一判断即可得到所有的守形数。
代码如下
#include
int main()
{
int i, r, s=1;
for(i = 2; i <= 2000; i++)
{
r = i*i;//计算平方。
if(r/(s*10) != 0) s*=10; //获取位数。
r%=s;//得到尾数。
if(r == i) printf("%d
", i);//是守形数,输出值,每行一个。
}
return 0;
}输出结果为
5
6
25
76
376
625
若正整数n是它的平方数的尾部,则称n为守形数,又称同构数。
根据定义,可以得到计算的思路。
1 对于范围内的每个数值,计算其平方;
2 根据原数的位数,截取数值的尾部;
3 将数值的尾部与原数比较,如果相等则为守形数。
遍历需要的范围,即2-1000,逐一判断即可得到所有的守形数。
代码如下
#include
int main()
{
int i, r, s=1;
for(i = 2; i <= 2000; i++)
{
r = i*i;//计算平方。
if(r/(s*10) != 0) s*=10; //获取位数。
r%=s;//得到尾数。
if(r == i) printf("%d
", i);//是守形数,输出值,每行一个。
}
return 0;
}输出结果为
5
6
25
76
376
625
全部回答
- 1楼网友:行雁书
- 2021-03-27 08:52
#include
#define M 2
#define N 1000
main()
{
int num,count=0,i,j,lenth=0;
printf("从%d到%d之中的守形数有:\n",M,N);
for(i=M;i<=N;i++)
{
num=i;
j=1;
while(num!=0)
{
num=num/10;
lenth++;
}
while(lenth!=0)
{
j=10*j;
lenth--;
}
if((i*i-i)%j==0)
{
printf("%d\t",i);
count++;
}
}
printf("\n共计%d个",count);
}
#define M 2
#define N 1000
main()
{
int num,count=0,i,j,lenth=0;
printf("从%d到%d之中的守形数有:\n",M,N);
for(i=M;i<=N;i++)
{
num=i;
j=1;
while(num!=0)
{
num=num/10;
lenth++;
}
while(lenth!=0)
{
j=10*j;
lenth--;
}
if((i*i-i)%j==0)
{
printf("%d\t",i);
count++;
}
}
printf("\n共计%d个",count);
}
- 2楼网友:洒脱疯子
- 2021-03-27 07:28
什么叫守形数追问知道了,谢谢!
- 3楼网友:封刀令
- 2021-03-27 05:52
#include
#include
int shouxing(){
int i,n,c;
c=0;
printf("守形数有:");
for(i=2;i<1001;i++){
n=pow(i,2);
if(i<10 && n%10 == i){//一位数守形数
printf("%d,",i);
c++;
}
else if(i<100 && n%100==i){//二位数守形数
printf("%d,"i);
c++;
}
else if(i<1000 && n%1000 == i){//三位数守形数
printf("%d,"i);
c++;
}
else{//1000不是守形数
printf("共计%d个",c);
}
}
return 1;
}
#include
int shouxing(){
int i,n,c;
c=0;
printf("守形数有:");
for(i=2;i<1001;i++){
n=pow(i,2);
if(i<10 && n%10 == i){//一位数守形数
printf("%d,",i);
c++;
}
else if(i<100 && n%100==i){//二位数守形数
printf("%d,"i);
c++;
}
else if(i<1000 && n%1000 == i){//三位数守形数
printf("%d,"i);
c++;
}
else{//1000不是守形数
printf("共计%d个",c);
}
}
return 1;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯