C语言输出100-200的素数个数,还有全部素数。

#include <stdio.h>
#include <math.h>
void main()
{

int i,j,n=0;
for(i=100;i<=200;i++)
{
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
break;
if(j>sqrt(i))
{

printf("%d ",i);
n=n+1;
}

printf("%d",n);

}
}
我是新手,能帮我看看错哪吗?还有怎么输出素数个数??

在你的代码基础上进行了微调,希望对你有帮助
#include <math.h>
#include <stdio.h>
int main()
{

int i,j,n=0;
for(i=100;i<=200;i++)
{
int num=(int)sqrt(i); //定义一个num减少sqrt的运行次数,提高效率
for(j=2;j<=num;j++)
if(i%j==0)
break;
if(j>num)
{
printf("%d ",i);
n=n+1; //素数个数加1个
}
}
printf("\n%d\n",n); //输出素数个数
return 0;
}追问

要是先输出素数个数呢?

追答

要么采用数组,要么采用递归!
先输出个数,需要先统计出个数,所以必须得到这个数才能输出!
当然你也可以跑两遍你的代码,第一次只统计个数,第二次输出每个素数!(如果你是初学者,还没有学到数组和递归方法,可以使用这种方式)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-25

/*

 101 103 107 109 113 127 131 137 139 149

 151 157 163 167 173 179 181 191 193 197

 199

共有21个素数

Press any key to continue

*/

#include <stdio.h> 
#include <math.h> 

int main() {
int i,j,flag,cnt = 0; 
    for(i = 100;i <= 200;i++) {
flag = 1;
for(j = 2;j <= sqrt(i);j++)
if(i%j == 0) {
flag = 0;
break;
}
if(flag) {
if(cnt && cnt%10 == 0) printf("\n");
printf("%4d",i);
++cnt;
}
}
printf("\n共有%d个素数\n",cnt);
return 0;
}

第2个回答  2020-05-09
#include"stdio.h"
#include"math.h"
void
main()
{
int
m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
{
if(m%i==0)
break;
}
if(i>=k+1)
//应该是for循环判读是否被2到k整除完成后再输出.
{
printf("%d\t",m);
n=n+1;
}
if(n%10==0)printf("\n");
}
getch();
}
第3个回答  2013-10-25
#include <stdio.h>

int main(void)
{
        int i, j;
        int n = 0;

        for (i = 100; i <= 200; i++) {
                for (j = 2; j * j <= i; j++) {
                        if (i % j == 0)
                                break;
                }   
                if (j * j > i) {
                        printf("%d  ", i); 
                        n++;
                }   
        }   
        printf("\ntotal %d primes\n", n); 
        return 0;
}

第4个回答  2013-10-25
#include <stdio.h>

int main()

{

    int n,count,sum=0;

    int i;

    
    for(n=101; n<=200; n++)

    {

        count=0;            //每次都需要初始化count

        for(i=2; i<n; i++)

        {

            if(n%i==0)

                count++;

        }

        if(count ==0)
        {
            printf("%d\n",n);

            sum++; 
        } 
    }

    printf("共有%d个素数\n",sum);
    return 0;

}

追问

那要是先输出个数腻??

追答

那就把素数结果先保存到一个数组里,先输出了个数,再输出素数。

int main()
{
    int n,count,sum=0;
    int i,t=0,arr[100];
     
    for(n=101; n<=200; n++)
    {
        arr[t]=0;
        count=0;            //每次都需要初始化count
        for(i=2; i<n; i++)
        {
            if(n%i==0)
                count++;
        }
        if(count ==0)
        {
            arr[t]=n;
            sum++; 
         } 
        t++; 
    }
    printf("共有%d个素数\n",sum);

    for(t=0; t<100; t++)
   { 
      if(arr[t]!=0)
         printf("%d\n",arr[t]);   
   }   
    return 0;
}

相似回答