当前位置: 首页 > news >正文

求1000以内所有恰好能分解成10组两个素数之和

要求

根据哥德巴赫猜想,任意一个大偶数都可以分解为两个素数之和。但许多偶数分解为两个素数之和并不是唯一的。
请编写函数fun,其功能是:求1000(不包括1000)以内的所有恰好能分解成10组两个素数之和(5+109和109+5被认为是同一组)的偶并依次存入数组a中并在屏幕上打印出来,打印时每个数单独一行,符合条件的个数通过函数值返回。数,
例如:114=5+109=7+107=11+103=13+101=17+97=31+83=41+73=43+71=47+67=53+61
114恰好可以分解为10组素数之和,因此114是我们要找的偶数。
而116=3+113=7+109=13+103=19+97=37+79=43+73
120=7+113=11+109=13+107=17+103=19+101=23+97=31+89=37+83=41+79=47+73=53+67=59+61
116可以分解为6组素数之和,120可以分解为12组素数之和,因此116和120都不是我们要找的偶数。函数prime用来判断一个数n是否为素数,是则返回1,否则返回0。

代码

#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)int prime(int n)
{	int k,flag=1;for (k=2; k<=(int)sqrt((double)n); k++)if (n%k == 0)flag=0;return flag;
}
int fun(int m, int a[])
{ int k, s, count, i=0;for(k=6; k<=m; k+=2){   count = 0;/* 请在此处填写代码 */for(s=2;s<k/2;s++){if(prime(s) & prime(k-s)){count++;}}if (count == 10) {printf("%d\n", k);a[i++] = k;}}return i;
}
main( )
{	int count, a[100];void NONO(int count, int a[]);count = fun(999, a);NONO(count, a);
}void NONO(int count, int a[])
{FILE *fp;int i;fp = fopen("out.dat","w") ;for(i=0; i<count; i++)fprintf(fp, "%d\n", a[i]);fclose(fp);
}

结果截图


http://www.mrgr.cn/news/33011.html

相关文章:

  • Python爬虫-Post请求中,参数只有value没有key,如何正确处理?
  • 初始网络编程(下)
  • 常见的中间件漏洞
  • MySQL高阶1907-按分类统计薪水
  • 华为摄像机/NVR主动注册协议接入SVMSP平台
  • 基于SpringBoot+Vue+MySQL的手机销售管理系统
  • 秩一的等价转化
  • 有关elementui form验证问题,有值却仍然显示不通过
  • HtmlCss 基础总结(基础好了才是最能打的)三
  • ★ C++进阶篇 ★ 二叉搜索树
  • 机器之心 | 阿里云Qwen2.5发布!再登开源大模型王座,Qwen-Max性能逼近GPT-4o
  • OpenGL 原生库6 坐标系统
  • 【漏洞复现】泛微OA E-Office jx2_config.ini 敏感信息泄漏漏洞
  • Wireshark学习使用记录
  • IPsec-VPN中文解释
  • Vue极简入门
  • 不要死磕技术,还是要产品化
  • 图像生成大模型 Imagen:重塑创意的未来
  • 排序----快速排序(快排)(递归版)
  • 构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)