开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 801|回复: 2
收起左侧

[完成] C编程求助

 关闭 [复制链接]
结帖率:100% (17/17)
发表于 2022-4-25 14:28:29 | 显示全部楼层 |阅读模式   北京市北京市
1000精币
屏幕截图(22).png

在线求解

最佳答案

查看完整内容

上面 AddPrimeToArray 中的内循环里漏掉了一个 IsPrime(k) 判断,请改为: void AddPrimeToArray(int (*data)[4], int *len) { *len = 0; for (int i = 2; i

结帖率:100% (1/1)
发表于 2022-4-25 14:28:30 | 显示全部楼层   浙江省温州市
上面 AddPrimeToArray 中的内循环里漏掉了一个 IsPrime(k) 判断,请改为:
void AddPrimeToArray(int (*data)[4], int *len)
{
        *len = 0;
        for (int i = 2; i <= 30; i++)
        {
                for (int j = 2; IsPrime(i) && j <= 30; j++)
                {
                        for (int k = 2; IsPrime(j) && k <= 30; k++)
                        {
                                if (IsPrime(k))
                                {
                                        int t = i + j + k;
                                        if (IsPrime(t))
                                        {
                                                data[*len][0] = t;
                                                data[*len][1] = i;
                                                data[*len][2] = j;
                                                data[(*len)++][3] = k;
                                        }                                       
                                }
                        }               
                }
        }
}

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (1/1)
发表于 2022-4-25 15:12:27 | 显示全部楼层   浙江省温州市
满足这些条件的素数,远不止50个,所以我在下面的代码中定义了一个不会超过大小的二维数组:

#include <stdio.h>
int IsPrime(int num)
{
        for (int i = 2; i < num; i++)
        {
                if (num % i == 0)
                {
                        return 0;
                }
        }
        return 1;
}
void AddPrimeToArray(int (*data)[4], int *len)
{
        *len = 0;
        for (int i = 2; i <= 30; i++)
        {
                for (int j = 2; IsPrime(i) && j <= 30; j++)
                {
                        for (int k = 2; IsPrime(j) && k <= 30; k++)
                        {
                                int t = i + j + k;
                                if (IsPrime(t))
                                {
                                        data[*len][0] = t;
                                        data[*len][1] = i;
                                        data[*len][2] = j;
                                        data[(*len)++][3] = k;
                                }
                        }               
                }
        }
}
void PutPrimeArray(int (*data)[4], int *len)
{
        printf("满足条件的三元组的个数: %d个\n", *len);
        for (int i = 0; i < *len; i++)
        {
                printf("第%d个:(%d, %d, %d),和为 %d\n", i + 1, data[i][1], data[i][2], data[i][3], data[i][0]);
        }
}
int main()
{
        int data[30000][4] = { 0 };
        int len = 0;
        AddPrimeToArray(data, &len);
        PutPrimeArray(data, &len);
        return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表