主题:帮忙看看问题
关于自守数的问题。
如果一个数的平方的尾数还是这个数,那么这个数就是自守数。
例如25的平方为625,位数为25,那么25就是自守数。
#include <iostream>
#include <cmath>
using namespace std;
class CSelf
{
int m,n,p;
int a[100];
public:
CSelf()
{
m=10;n=100;
}
CSelf(int a,int b)
{
m=a;n=b;
}
void process()
{
int j(0);
for(int i=m;i<=n;i++)
{
int k;
if(i>10000) k=10000;
else if(i>1000) k=1000;
else if(i>100) k=100;
else if(i>10) k=10;
else if(i>0) k=1;
if((i*i)%k==i)
{
a[j]=i;
j++;
p++;
}
}
}
void print()
{
cout<<"总共有"<<p<<"个自守数."<<endl;
if(p>0)
{
cout<<"分别为:"<<endl;
for(int i=0;i<p;i++)
cout<<a[i]<<endl;
}
}
};
void main()
{
CSelf a,b(1,10000);
a.process();
a.print();
b.process();
b.print();
}
我写的程序有问题,是CSelf中的p的问题,不知道该怎么改。
如果一个数的平方的尾数还是这个数,那么这个数就是自守数。
例如25的平方为625,位数为25,那么25就是自守数。
#include <iostream>
#include <cmath>
using namespace std;
class CSelf
{
int m,n,p;
int a[100];
public:
CSelf()
{
m=10;n=100;
}
CSelf(int a,int b)
{
m=a;n=b;
}
void process()
{
int j(0);
for(int i=m;i<=n;i++)
{
int k;
if(i>10000) k=10000;
else if(i>1000) k=1000;
else if(i>100) k=100;
else if(i>10) k=10;
else if(i>0) k=1;
if((i*i)%k==i)
{
a[j]=i;
j++;
p++;
}
}
}
void print()
{
cout<<"总共有"<<p<<"个自守数."<<endl;
if(p>0)
{
cout<<"分别为:"<<endl;
for(int i=0;i<p;i++)
cout<<a[i]<<endl;
}
}
};
void main()
{
CSelf a,b(1,10000);
a.process();
a.print();
b.process();
b.print();
}
我写的程序有问题,是CSelf中的p的问题,不知道该怎么改。