| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6156 人关注过本帖, 1 人收藏
标题:C语言寻找素数和最佳方案寻找两道题
只看楼主 加入收藏
Kaiaiaiai
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-6
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:20 
C语言寻找素数和最佳方案寻找两道题
1.从键盘输入一个整数,输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。PS:数学意义上的最小素数是2,例如,若输入-213,结果应是2。
2.某品牌巧克力使用500克原料可制作55小块巧克力,请编程实现:输入原料重量(以千克为单位),计算出制作巧克力的块数(四舍五入)。然后对这些巧克力进行分包,小盒放11块,大盒放24块,问各分装多少大盒多少小盒剩余巧克力块数最少。
搜索更多相关主题的帖子: C语言 巧克力 键盘 数学 制作 
2016-11-06 10:54
Kaiaiaiai
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-6
收藏
得分:0 
这两道题都是循环结构的题目,不太知道算法和思路,希望有人指点一二!

我只想好好学习C语言
2016-11-06 10:57
加奈
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2014-10-12
收藏
得分:0 
1.
----------------
如果输入的整数n是有界的,可以用枚举法把2-n里的素数全部枚举出来存到一个素组b[]里。
这样你就只要判断
情况1   n - b[min] == b[max] - n ;
情况2  n - b[min] < b[max] - n ? b[min] : b[max] ;
如果输入的整数n是无界的,我没想法,只能用数学方法判断前一个是不是,在找后一个是不是;

对于n<2,就不用找了,直接输出2;
----------------
2
-----------------
对于制作得到的巧克力块N;
我们可以先用小包装尽可能装,那么剩余巧克力 w < 11,小包装盒用到small个
然后我们知道,一个大包装盒  big = 2 * 小包装盒  +  2;
那么接下来如果条件满足:
small > 2
w > 2
我们就可以得到 :
big++;
small - = 2;
w - =2;
  2 * 小包装盒  +  2块  替换为一个大包装盒来减少w
-----------------
2016-11-06 12:25
加奈
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2014-10-12
收藏
得分:0 
1.
----------------
如果输入的整数n是有界的,可以用枚举法把2-n里的素数全部枚举出来存到一个素组b[]里。
这样你就只要在素组中分别找到比n大和小的两个数,判断
情况1   n - b[min] == b[max] - n ;
情况2  n - b[min] < b[max] - n ? b[min] : b[max] ;
如果输入的整数n是无界的,我没想法,只能用数学方法判断前一个是不是,在找后一个是不是;

对于n<2,就不用找了,直接输出2;
----------------
2
-----------------
对于制作得到的巧克力块N;
我们可以先用小包装尽可能装,那么剩余巧克力 w < 11,小包装盒用到small个
然后我们知道,一个大包装盒  big = 2 * 小包装盒  +  2;
那么接下来如果条件满足:
small >= 2
w >= 2
我们就可以得到 :
big++;
small - = 2;
w - =2;
  2 * 小包装盒  +  2块  替换为一个大包装盒来减少w
-----------------
2016-11-06 12:27
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
第一题的过程在程序中,只不过要分类讨论,即使是无界的也能解决问题@上楼,直到找到下一个素数或者递减时n<2才结束循环
代码如下:
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int a,t=0,t1=0,t2=0;
    int i,j,k;
    scanf("%d",&a);
    if (a>2)
    {
        for (i=a+1;t!=1;i++)
            for (j=2,t=1;j<=sqrt(i);j++)
                if (i%j==0)
                {
                    t=0;
                    break;
                }
                t1=i-1;
                t=0;
        for (i=a-1;t!=1;i--)
            for (j=2,t=1;j<=sqrt(i);j++)
                if (i%j==0)
                {
                    t=0;
                    break;
                }
                t2=i+1;
    }
    else if (a==2)
    {
        printf("3\n");
        return 0;
    }
    else
    {
        printf("2\n");
        return 0;
    }
    if (t1-a<a-t2)
        printf("%d",t1);
    else if (a-t2<t1-a)
        printf("%d",t2);
    else
        printf("%d %d",t2,t1);
    printf("\n");
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-06 12:39
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 楼主 Kaiaiaiai
题目要求以千克为单位,千克可以为小数吗?如果千克只能取整,那么能制作巧克力数为必定为11的倍数,全部用小盒包装就刚好一个不剩了。
所以对于这题来说,千克取值的精度很重要。
如果千克可以为小数,这条题才能够下手~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-06 12:51
Kaiaiaiai
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-6
收藏
得分:0 
回复 6楼 九转星河
应该是要取整,一块一块,不应该出现2.3块之类的吧。谢谢

我只想好好学习C语言
2016-11-06 14:45
Kaiaiaiai
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-6
收藏
得分:0 
回复 6楼 九转星河
如果可以小数就四舍五入?

我只想好好学习C语言
2016-11-06 14:47
Kaiaiaiai
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-11-6
收藏
得分:0 
回复 3楼 加奈
1. 那个n是无界的。。怎么判断前一个后一个?和素数的判别一样?

我只想好好学习C语言
2016-11-06 15:09
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 Kaiaiaiai
我说的是千克是不是要取整,能不能取3.14159千克之类的

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-06 15:10
快速回复:C语言寻找素数和最佳方案寻找两道题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018236 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved