C语言求100以内素数的问题
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,所以它不在那些假设的素数集合中。
参考资料:百科-素数质数
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到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,所以它不在那些假设的素数集合中。
参考资料:素数(质数)——百度百科
#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;
}
前几个高赞回答简直瞎搞,复杂又忽略掉了数字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;
}
}
}
上图