| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1255 人关注过本帖
标题:急~~~请问这道题怎么做?编程思路(算法)是什么?
只看楼主 加入收藏
youyuanjia
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:15 
急~~~请问这道题怎么做?编程思路(算法)是什么?
编程寻找6个成等差数列且小于160的素数.
搜索更多相关主题的帖子: 思路 算法 
2010-04-04 14:02
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
建议先找到小于160的素数存入一个数组,然后再来找这6个数,应该会省时间。。。。

学无止境!
2010-04-04 14:12
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:5 
#include <iostream>
using namespace std;
#include <iomanip>
int m,    ss[25];
int shusu(int m)
{
    int i1;
    for (i1=2; i1<m; i1++)
        if (m%i1==0)   break;
    if (m==i1) return 1;
}
void main()
{    int i2=0;
for (int i=1; i<=160; i++)
if (shusu(i)==1)
{    ss[i2]=i;
i2++;
}
for (int j=1; j<25; j++)
{    for (int j1=1; j1<160; j1++)
{   
    if (shusu(ss[j]+j1)==1 && shusu(ss[j]+j1*2)==1 && shusu(ss[j]+j1*3)==1
        && shusu(ss[j]+j1*4)==1 && shusu(ss[j]+j1*5)==1)
        cout << ss[j] << setw(8) << ss[j]+j1 <<  setw(8) << ss[j]+j1*2  <<  setw(8) << ss[j]+j1*3   
        <<  setw(8) << ss[j]+j1*4 <<  setw(8) << ss[j]+j1*4 << endl;
}
}
}
2010-04-04 14:35
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
程序代码:
#include<stdio.h>
int sushu(int n)
{
    int i;
    int sum=0;
    if(n==1)
        return 0;
    for(i=2;i<=n/2+1;i++)
        if(n%i==0)
            sum++;
    if(sum==0)
        return 1;
    else
        return 0;
}
int main()
{
    int f[100],num[5];
    int j,i,n,k=0,a,b,c,d;
    for(i=1;i<160;i++)
        if(sushu(i)==1)
            f[k++]=i;
    for(i=0;i<k;i++)
        for(j=i+1;j<k;j++)
            for(a=j+1;a<k;a++)
                for(b=a+1;b<k;b++)
                    for(c=b+1;c<k;c++)
                        for(d=c+1;d<k;d++)
                        {
                            num[0]=f[j]-f[i];
                            num[1]=(f[a]-f[j]);
                            num[2]=(f[b]-f[a]);
                            num[3]=(f[c]-f[b]);
                            num[4]=(f[d]-f[c]);
                            if(num[0]==num[1] && num[1]==num[2] && num[2]==num[3] && num[3]==num[4])
                                printf("%d %d %d %d %d %d\n",f[i],f[j],f[a],f[b],f[c],f[d]);
                        }
}
6重循环,看起来长点,但是很好理解!!!
收到的鲜花
  • Devil_W2010-04-04 14:40 送鲜花  -2朵   附言:很烂!

学无止境!
2010-04-04 14:36
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
两重就够了 成等差 那么必定有俩俩之间的差 为最小间距的倍数
2010-04-04 14:50
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:10 
程序代码:
#include<stdio.h>
int sushu(int n)
{
    int i;
    int sum=0;
    if(n==1)
        return 0;
    for(i=2;i<=n/2+1;i++)
        if(n%i==0)
            sum++;
    if(sum==0)
        return 1;
    else
        return 0;
}
int main()
{
    int f[100];
    int j,i,n,k=0;
    for(i=1;i<160;i++)
        if(sushu(i)==1)
            f[k++]=i;
    for(i=0;i<25;i++)
        for(j=1;j<=50;j++)
           if(sushu(f[i]+j)==1 && sushu(f[i]+j*2)==1 && sushu(f[i]+j*3)==1 &&sushu(f[i]+j*4)==1 && sushu(f[i]+j*5)==1)
                printf("%d %d %d %d %d %d\n",f[i],f[i]+j,f[i]+2*j,f[i]+3*j,f[i]+4*j,f[i]+5*j);
}
这样可以吧?和ls的思路差不多啊!!!

[ 本帖最后由 liucs116 于 2010-4-6 09:58 编辑 ]

学无止境!
2010-04-04 15:05
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
回复 6楼 liucs116
大哥们,你们太热情了,只要给他思想提示一下就够了,别一次全给了
2010-04-04 21:22
youyuanjia
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
回复 6楼 liucs116
请问一下,这个双重循环中,外层循环变量i是不是用来表示所以素数的,内层循环变量j是不是代表公差,那为什么i的范围是0-25, j的范围是1-50呢?
2010-04-04 21:44
阿邋
Rank: 2
等 级:论坛游民
帖 子:84
专家分:41
注 册:2009-3-6
收藏
得分:0 
   for(i=0;i<25;i++)
        for(j=1;j<=50;j++)
           if(sushu(f[i]+j)==1 && sushu(f[i]+j*2)==1 && sushu(f[i]+j*3)==1 &&sushu(f[i]+j*4)==1 && sushu(f[i]+j*5)==1)


高手解释一下这几句的意思啊??谢谢。25 ,50 不能理解

我并不具有我想要的一切,只是我所有的都是我想要的!
2010-04-05 23:14
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
其实是不用50的,大概30左右好像可以了,为了保险起见我用的50!!!!!!

[ 本帖最后由 liucs116 于 2010-4-6 09:58 编辑 ]

学无止境!
2010-04-06 09:49
快速回复:急~~~请问这道题怎么做?编程思路(算法)是什么?
数据加载中...
 
   



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

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