标题:解决关键性问题
只看楼主
不懂C编程
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2009-10-17
结帖率:100%
 问题点数:0 回复次数:0 
解决关键性问题

#include"stdio.h"
int cnt,sum;
int b[100];
void sp()
{
    int i,j;
    for(i=100;i<1000;i++)
    {
        for(j=2;j<i;j++)
            if(i%j==0)    /*如果能整除,说明i不是素数,退出循环*/
            break;
            if(j==i&&((i%10+i/10%10)%10==i/100))  /*如果j==i,则i是素数,然后判断i是否满足条件*/
            {
                b[cnt++]=i; /*将满足条件的i存入数组b中*/
                cnt++;      /*满足条件的素数个数加1*/
                sum+=i;     /*满足条件的素数求和*/
            }
    }
}
void main()
{
    int i;
    cnt=sum=0;
    sp();
    printf("cnt=%d\n",cnt);
    printf("sum=%d\n",sum);
    for(i=0;i<cnt;i++)
    {
        if(i%6==0)
        printf("\n");
        printf("%d\t",b[i]);
    }
}
运行结果是:
cnt=30
sum=6825

101     0       211     0       239     0
257     0       293     0       349     0
367     0       431     0       523     0
541     0       569     0       587     0
743     0       761     0       853     0       Press any key to continue

看到结果了吧?出现0了,一看就知道错了,错在哪里了?还有一个问题
即if(j==i&&((i%10+i/10%10)%10==i/100))  /*如果j==i,则i是素数,然后判断i是否满足条件*/
它的前提条件是for(j=2;j<i;j++),既然j<i,它可能出现j==i吗?
搜索更多相关主题的帖子: 关键性 
2009-10-18 19:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-289044-1-1.html




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

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