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楼的改不对啊

第1个回答  推荐于2019-10-01

错误的地方:第二个for循环不能用t控制,因为t是flag再控制循环无法执行下去

例子如下:

程序执行结果如下图所示:

本回答被网友采纳
第2个回答  推荐于2018-05-03
第二个for循环不能用t控制,因为t是flag再控制循环无法执行下去
#include<stdio.h>
void main()
{ int t,i,j;

for(i=3;i<=100;i++)
{t=1;
for(j=2;j<=(i/2);j++)
if(i%j==0)
t=0;
if(t==1)
printf("%d ",i);
}

}本回答被提问者采纳
第3个回答  2008-02-02
你的写法存在多处问题,首先你对流程控制不清楚,其次是算法出现问题

#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;break;} //这里出现死循环,应该用break函数及时跳出循环
if(t==1)printf("%d",i);当i等于一时t为素数

}
}
运行看看
第4个回答  2008-02-02
#include<stdio.h>
void main()
{ int t,i;

for(i=1;i<=100;i++)
{
t=1; //是素数
for(int j=2;j<=(int)(i/2);j++)//如果i是2到i/2的任意一个数的倍数,i都不是素数

if(i%j==0)
t=0; //不是素数

if(t==1)
printf("%d\n",i); //是素数才输出

}
}
第5个回答  2008-02-02
思路不对,素数是能被1和本身整除的,你的程序排除了1但没排除被本身整除,而且写法也多处错误!!
下面程序可以直接运行:
#include<stdio.h>
#include<math.h>
main()
{
int i,j,k;
int a[101];
for(i=1;i<101;i++)
{
a[i]=i;
}
for(j=2;j<101;j++)
{
for(k=2;k<sqrt(j)+1;k++)
{
if(a[j]%k==0&&j!=2)
{
a[j]=0;
}
}
if(a[j]!=0)
printf("%d\n",a[j]);
}
}
相似回答