c++打卡第二十六天

一、问题描述

 二、设计思路

①、我们可以定义long类型数,算出这个数的平方。

②、我们可以判断这个数的位数,然后对平方数除余(数本身位数+1),得到一个余数,判断是否与自身数相等。

③、如果相等就打印出来。

三、流程图

四、代码实现

#include<iostream>
#include<cmath>
using namespace std;
long ws(long n)
{
    long count=0;
    while(n!=0)
    {
        count++;
        n=n/10;
    }
    return count;
}
int main()
{
    long n,p,w,nn;
    long a;
    for(n=1;n<100000;n++)
    {
        a=1;
        p=n*n;
        nn=n;
        w=ws(n);
        for(int j=1;j<=w;j++)
        {
            a=a*10;
        }
        if((p%a)==nn)
        {
            cout<<"自守数为:"<<nn<<endl;
        }
    }
    return 0;
 } 

五、结果实现

 ②、回文数

一、问题描述

 二、设计思路

①、对于n的范围取平方。

②、将平方数拆分到数组中,从头到尾判断数组数字是否一致。

③、如果首尾依次对应相等,就说明这个平方数是回文数,打印出原数和平方数。

三、流程图

四、代码实现

#include<iostream>
using namespace std;
int main() {
    int n;
    long p;
    int t;
    long pp;
    int i;
    int a[16];
    for(n=1; n<256; n++) {
        p=n*n;
        pp=0;
        t=1;
        for(i=0;p!=0;i++) {
            a[i]=p%10;
            p=p/10;
        }
        for(; i>0; i--) {
            pp+=a[i-1]*t;
            t=t*10;
        }
        if(pp==(n*n)) {
            cout<<"数本身为:"<<n<<",回文数为:"<<pp<<endl;
        }
    }
    return 0;
}

五、代码实现

 

posted @ 2023-05-14 11:04  七安。  阅读(11)  评论(0编辑  收藏  举报