搜索
查看: 785|回复: 1
打印 上一主题 下一主题

不知道哪里错了

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-24 17:51:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
相差为2的两个质数称为孪生质数。例如3和5是一对孪生质数,41和43也是一对孪生质数。那么100~200之间共有多少对孪生质数呢?

#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,c,d,i,t,sum=0;
    for(a=100;a<=200;a++)
    {
                for(i=2;i<=a;i++)
        {
                        if(a%i==0)
            break;
        }
        if(i==a)
        {
                        b=a+2;
                        for(t=2;t<b;t++)
                        {
                                if(b%t==0)
                                        break;
                 else
                                        sum=sum+1;
                        }
        }   
    }
    printf("%d",sum);
        system("pause");
        return 0;
}


沙发
发表于 2014-4-24 20:44:36 | 只看该作者
for(t=2;t<b;t++) {
   if(b%t==0)
    break;
  else
   sum=sum+1;

}
你要做的是,如果b是一个质数,那么sum = sum + 1;
b是不是质数要在循环结束后才能确定,sum = sum + 1; 肯定是写在循环外面的
所以应该是
for(t=2;t<b;t++) {
   if(b%t==0)
    break;
}
if(t >= b)
  sum += 1;

这样能得到正确答案,但是做法仍然不正确
for(a=100;a<=200;a++) 应该是 a + 2 <= 200
不然会检验199和201这一组,如果这两个都是质数,那么就会多一组
索性不是,才能得到正确答案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表