格格不入 发表于 2017-7-5 19:02:13

关于for循环嵌套

本帖最后由 格格不入 于 2017-7-5 21:07 编辑

原题:我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
我写的代码(算法很笨,不要嘲笑)第一个for计算从第1到n-1个的素数和=sum1,第二个for计算从第1到m个的素数和=sum2,sum=sum2-sum1,即最终结果,然而比如输入3 和5 吧,计算的却是第3个到第 4 个素数和!在第二个scanf后加入m = (m+n-2);后(代码中注释掉的那个)能消除这个bug,百思不得其解,求大神指教?#include<stdio.h>
int main()
{
int n,m;
scanf("%d",&n);
scanf("%d",&m);
//m = (m+n-2);
    int sum = 0,sum1 = 0,sum2 = 0;
      int num;
      int count = 0;

for(num= 2; count < (n-1); num ++)
{
       int i;
      _Bool flag = 1;
      for(i = 2; i < num ;i++)
      {
                if(num % i == 0 )
                {
                        flag = 0;
                }
    }   
                if(flag)
                {
                count ++;
                        
                        sum1+= num;      
                }      
}               
      for(num= 2; count <= m ; num ++)
{
       int i;
      _Bool flag = 1;
      for(i = 2; i <num ;i++)
      {
                if(num % i == 0 )
                {
                        flag = 0;
                }
    }   
                if(flag)
                {
                count ++;
               
                        sum2+= num;      
                }      
}
    sum = sum2 - sum1;
    printf("%d",sum);
      return 0;
}

格格不入 发表于 2017-7-5 19:51:54

在线等,急

格格不入 发表于 2017-7-5 20:48:23

30行初始条件加入count=0,这是第二个循环,计数器重新归零。
哼,等那么久没人答,还是我自己找出的bug,悬赏自己拿了!
页: [1]
查看完整版本: 关于for循环嵌套