C语言求100以内素数的问题

#include<stdio.h>
void main()
{ int t,i;

for(i=2;i<=100;i++)
t=1;
for(t=2;t<i;t++)
if(i%t==0)
t=0;
if(t==0)printf("%d",i);

}
各位高手能不能看我这个程序哪里错了?
按一楼和2楼的改不对啊

#include<stdio.h>

int main()

{

int i=0;

int count=0;

for(i=0;i<=100;i++)

{

int j=0;

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

{

if(i%j==0)

{

break;

}

}

if(i==j)

{

count++;

printf("%d ",i);

}

}

printf("\ncount=%d\n",count);

return 0;

}

解题思路:

素数,就是除了1和他本身,不能被其他数整除的数字。答案就是用100到200之间的每个数字,除以2到其本身前面的那一个数字,如果此过程中出现整除的现象,则该数不是素数。如果没有整除的现象,则该数为素数输出。

扩展资料:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。

质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,  是素数或者不是素数。

如果 为素数,则 要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。

参考资料:百科-素数质数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-07

C语言求100以内的素数编程的思路和方法如下:

1.首先需要定义两个整型的游标变量,用于后续的循环操作。这里定义两个变量为i,j。

2.接着适用for循环来分别计算100以内的数。其中游标适用i变量。(因为第一个素数是3,所以循环变量游标从数字3开始)

3.接着在第一个for循环的开头添加布尔变量tag,这个用于后续判断一个数是否为素数。当为素数时,将tag置为false。

4.然后使用第二个for循环,在这个循环中,使用变量j作为循环游标,通过尝试2到比需要比较的数之前的所有数是否为i的因子。

5.在第二哥循环中,当检测到i不为素数时,将tag置为false。

6.然后判断tag是否为true,如果是则说明该数为素数,此时输出该数。

7.编写代码完成后,运行程序即可成功输出100以内的所有素数。

本回答被网友采纳
第2个回答  推荐于2019-08-28

    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

程序代码:

#include <stdio.h>

#include "math.h"

main()

{int m,i,,k,h=0,leap=1;

printf("\n");

for(m=0;m<=100;m++)

{k=sqrt(m+1);

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

if(m%i==0)

{leap=0;break;}

if(leap){printf("%-4d",m);h++;

if(h%10==0)

printf("\n");}}}

资料拓展:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。

质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,  是素数或者不是素数。如果  为素数,则  要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。

参考资料:素数(质数)——百度百科

本回答被网友采纳
第3个回答  推荐于2019-08-27

#include <stdio.h>

#include "math.h"

main( )

{int m,i,,k,h=0,leap=1;

printf("\n");

for(m=0;m<=100;m++)

{k=sqrt(m+1);

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

if(m%i==0)

{

leap=0;break;

}

if(leap)

{

printf("%-4d",m);

h++;

if(h%10==0)

printf("\n");

}

}

}

扩展资料

其他方法得到100以内的素数:

#include<stdio.h>

int main( )

{

int i = 0;

int j = 0;

int t = 1;

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

{

for(j = 2;j <= i / 2;j++)

{

if(i%j == 0)

{

t= 0;

break;

}

}

if(t == 1)

{

printf("%d\n",i);

}

t = 1;

}

return 0;

}

本回答被网友采纳
第4个回答  2020-03-12

前几个高赞回答简直瞎搞,复杂又忽略掉了数字2.

我这个程序可以求出100以内的素数并将其按照10个每行排列

其中num的计数算法题主可以学一下,经常用到

看不懂的地方我帮大家标注出来

#include<stdio.h>                                           //头文件

void main()

{

          int i,j,k,num=0;

          for(j=2;j<=100;j++)                             //简单的循环嵌套,j表示100以内所有数字

          {

                 k=1;

                 for(i=j-1;i>1;i--)

                 {

                        if(j%i==0)

                        {

                                k=0;                                //当j为素数时,k赋值为0

                         }

                 }

              if(k==1)                                           //判断k是否改变为0,即可判断j是否为素数

               {

                 printf("%5d",j);

                 num++;

               }

               if(num==10)                                                   //一行输出10个素数

              {

                printf("\n");

                 num=0;

              }

         }

}


上图

vc++6.0中的源码

结果

相似回答