自守数算法

简介: 自守数算法

算法举例

//自守数算法

例如:

25 ^ 2 = 625   76 ^ 2 = 5776  9376 ^ 2 = 87909376

例如:

376        被乘数
376        乘数
------  ---------
2256      第一个部分积=被乘数*乘数的倒数第一位
2632      第二个部分积=被乘数*乘数的倒数第三位
1125      第三个部分积=被乘数*乘数的倒数第三位
--------
141376

将以上的部分积的后3位求和后截取后3位就是3位数乘积的后3位。


C语言实现

1#include <stdio.h>
 2
 3/*由number的位数确定截取数字进行乘法时的系数k*/
 4#define forech_bit_num(mul,number,k)  \
 5            for(mul=number,k=1;(mul/=10)>0;k*=10) ;
 6//在0~xxxx这些数中寻找自守数
 7#define forech_number(number,num)     \
 8            for(number=0;number<num;number++)
 9//自守数核心算法:(部分积+截取被乘数的后N位*截取乘数的第M位),%kk再截取部分积
10#define automorphic_number(mul,number,k,ll,kk)   \
11        mul=(mul+(number%(k*10))*(number%ll-number%(ll/10)))%kk;
12long print_automorphic_number(long num)
13{
14    long mul,number,k,ll,kk;
15    forech_number(number,num)
16    {
17        forech_bit_num(mul,number,k);
18        kk=k*10;      /*kk为截取部分积时的系数*/
19        mul=0;        /*积的最后n位*/
20        ll=10;        /*ll为截取乘数相应位时的系数*/
21        while(k > 0)
22        {
23            automorphic_number(mul,number , k ,ll ,kk);
24            k/=10;               /*k为截取被乘数时的系数*/
25            ll*=10;
26        }
27         if(number==mul){         /*判断若为自守数则输出*/
28              printf("%ld   ", number);
29         }
30    }
31
32}
33
34int main(void)
35{
36    print_automorphic_number(1000);
37    return 0 ;
38}

运行结果:

640.png

目录
相关文章
|
运维 监控 网络协议
QT实现TCP通信:从基础到高级的全面解析
QT实现TCP通信:从基础到高级的全面解析
1881 0
|
JavaScript 前端开发
JS 下载 URL 链接文件(点击按钮、点击a标签、支持代理与非代理下载)
JS 下载 URL 链接文件(点击按钮、点击a标签、支持代理与非代理下载)
1311 0
|
2月前
|
SQL 人工智能 BI
智能体协作革命:基于LangGraph实现复杂任务自动分工
本文探讨大模型应用中多智能体协作的必要性,剖析单智能体局限,并基于LangGraph框架详解多智能体系统构建。通过子图状态共享与Network架构实战,展示如何打造高效、可控的AI协作系统,助力迈向组织级AI。建议收藏,深入学习。
601 6
|
Kubernetes 负载均衡 应用服务中间件
【K8S系列】第十三讲:Ingress详解
【K8S系列】第十三讲:Ingress详解
8327 0
|
弹性计算 虚拟化 KVM
Intel Xeon E5-2682 V4 (Broadwell) 2.5 GHz 性能评测 阿里云ECS服务器
Intel Xeon E5-2682 V4 (Broadwell) 2.5 GHz 性能评测 阿里云ECS服务器 阿里云 优 惠 地 址 https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=q3dtcrrv 阿里云ECS服务器是一种弹性可伸缩的云服务器,通过虚拟化平台将服务器集群虚拟为多个性能可配的虚拟机(KVM),对整个集群系统中所有KVM进行监控和管理,并根据实际资源使用情况灵活 分配和调度资源池。
11945 2
|
10月前
|
存储 关系型数据库 数据库
华为数据库openGauss与PostgreSQL使用对比
华为openGauss数据库基于PostgreSQL内核演进,进行了多项增强。密码认证从MD5升级为SHA256;字符串存储中,char(n)、varchar(n)的n由字符改为字节,新增nvarchar2(n)表示字符,最大存储100MB;且将空字符&#39;&#39;统一转换为null,提升了数据处理的一致性和安全性。
870 12
|
文字识别 监控 机器人
RPA(Robotic Process Automation)
RPA(Robotic Process Automation)即机器人流程自动化,是一种通过使用软件机器人来自动化业务流程和任务的技术。RPA可以模拟人类的操作行为,通过界面交互、数据处理等方式,自动执行重复性的业务流程和任务,提高工作效率和准确性,降低成本和风险。
1940 0
|
关系型数据库 MySQL Linux
Linux 文件基本属性
Linux 文件基本属性
65 3
|
并行计算
huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form ‘repo_name‘ or ‘nam
这篇文章介绍了在使用HuggingFace模型库时遇到的`Repo id`格式错误问题,并提供了将相对路径改为正确的绝对路径的解决办法。
|
Web App开发 JSON JavaScript
WebGL简易教程(十五):加载gltf模型
WebGL简易教程(十五):加载gltf模型
489 1