当前位置:网站首页>第十六章:构建n(5,7)阶素数幻方
第十六章:构建n(5,7)阶素数幻方
2022-07-31 05:29:00 【股_四】
// 构建n(5,7)阶素数幻方
int main()
{
int i, j, d, f, k, ml, m2, n, h, v, t, y, z;
long s, min;
int a[8][8], b[100], p[30000];
printf("请输入阶数n(n = 5 or 7) : ");
scanf("%d", &n);
printf("请输入区间 ml, m2:");
scanf("%d,%d", &ml, &m2);
if (ml % 2 == 0)
ml++;
for (i = ml; i <= m2; i = i + 2);
{
t = 1;
z = (int)sqrt(i);
for (j = 3; j <= z; j = j + 2)
if (i % j == 0)
{
t = 0;
break;
}
if (t == 1) p[i] = 1; //若[ml,m2]中奇数i为素
}
for (i = 1; i<= n; i++) //方阵第1列赋初值
a[i][1]=i*10+i;
for(i=1;i<=n;i++)
for (j = 2; j <= n; j++) // 根据规律构建口阶对角正
{
h = i + (n + 1) / 2 * (j - 1);
v = i + j - 1;
if (h > n) h = h % n;
if (h == 0) h = n;
if (v > n) v = v % n;
if (v == 0) v = n;
a[h][j] = i * 10 + v;
}
y = 0;
min = 100000;
for (d = 4; d <= (m2 - ml) / 4; d = d + 2) //双重d,i枚举
{
k = 0;
for (i = ml; i <= m2 - 4 * d; i = i + 2)
{
for (f = 1, j = 0; j <= n - 1; j++)
f* p[i + j * d];
if (f == 1) // 找到一个从i开始公差为d 的素口段
{
t = 1;
for (j = 1; j <= k; j++) //排除出现相同项的素n段
if ((i - b[j]) % d == 0 && (i - b[j]) / d < n) t = 0;
if (t == 1) {
k++; b[k] = i;
}
}
}
if (k >= n) //达到n时素n段即可组建素数幻方
{
y++;
for (s = 0, j = 1; j <= n; j++)
s += b[j];
s = s + (n - 1) * n / 2 * d;
if (s < min) min = s;
printf(" No%d:幻和为%d,(d=%d):\n" ,y, s, d);
for (i = 1; i <= n; i++) // 输出一个口阶素数幻方
{
for (j = 1; j <= n; j++)
printf(" %5d ",b[a[i][j] / 10] + (a[i][j] % 10 - 1) * d);
printf("\n");
}
if (s < min)min = s;
}
}
if (y > 1)
printf("以上%d个素数幻方中幻和最小值为%ld\n", y, min);
}
在这里插入代码片
边栏推荐
- Gradle剔除依赖演示
- 性能测试概述
- 选择排序法
- 机器学习反向传播的一些推导公式
- Analysis of the implementation principle and detailed knowledge of v-model syntactic sugar and how to make the components you develop support v-model
- 自动翻译软件-批量批量自动翻译软件推荐
- 银河麒麟服务器v10 sp2安装oracle19c
- Oracle入门 09 - Linux 文件上传与下载
- 自动化测试之unittest框架
- 安装gstreamer开发依赖库到项目sysroot目录
猜你喜欢
随机推荐
emby,jellyfin,kodi系列
Third-party library-store
Markdown中的数学符号
全网首发!ADK To Win11PE(1)中文+包
MySql的安装配置超详细教程与简单的建库建表方法
FTP服务与配置
树状数组(单点修改区间查询和区间修改单点查询)
项目-log4j2排查问题
Oracle入门 02 - IT软硬件平台及操作系统介绍
LXC的安装与配置使用
【云原生】-Docker容器迁移Oracle到MySQL
gstreamer的caps event和new_segment event
Hook API
在级联选择器,根据不会重复的字段,来获取当前的对象
How to use repeating-linear-gradient
【编程题】【Scratch三级】2022.03 冬天下雪了
MySQL表的增删改查(1)
DNS域名解析服务
Debian 搭建 WireGuard 服务端
TCP/IP协议和互联网协议群









