回 帖 发 新 帖 刷新版面

主题:找错!素数判定,各位帮帮忙

想了半天实在是找不出来
#include <stdio.h>
/**/#include <math.h>
//判断100-200之间的素数
void main()
{
    int i,j,n=0;
    int flag;
    
    for(i=100;i<=200;i++)
    {
        
        flag=1;
        for(j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {    flag=0;
                break;
            }
        printf("%d   ",i);
        n++;
        if(n%10==0)
            printf("\n");
        }
    }
    printf("the total is:%d",n);
    printf("\n");
}

最后输出结构很怪  
n=313个  郁闷着呢

请大虾们 多多帮忙哈

回复列表 (共3个回复)

沙发

#include <stdio.h>
#include <math.h>
//判断100-200之间的素数
void main()
{
    int i,j,n=0;
    int flag;
    
    for(i=100;i<=200;i++)
    {
        
        flag=1;
        for(j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {    flag=0;  //为合数flag为0
                break;
            }
        }
        if(flag==1)//i为素数
         {        
           printf("%d   ",i);
           n++;
          }
        if(n%10==0)
            printf("\n");
     }    
    printf("the total is:%d",n);
    printf("\n");
}
这是我修改后的,我运行了下是正确的,你对照的看下你错的地方

板凳

应该是你的循环的范围界定的问题

3 楼

#include <stdio.h>
/**/#include <math.h>
//判断100-200之间的素数
int main(void)
{
    int i,j,n=0;
    int flag;
    
    for(i=100;i<=200;i++)
    {
        
        flag=1;
        for(j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {
                flag=0;
                break;
            }
        }
        if (flag == 1)
        {
            printf("%d   ",i);
            n++;
            if(n%10==0)
            {
                printf("\n");
            }
        }
    }
    printf("the total is:%d",n);
    printf("\n");
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册