啊哈磊_编程从这里起步

标题: 不知道哪里错了 [打印本页]

作者: hcl109080    时间: 2014-4-24 17:51
标题: 不知道哪里错了
相差为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;
}



作者: rosynirvana    时间: 2014-4-24 20:44
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这一组,如果这两个都是质数,那么就会多一组
索性不是,才能得到正确答案




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2