输入一个整数,然后输出小于等于该数的所有素数,C语言问题。

不能用两个for循环解决么? 我这么写之后总是不对,调试的时候发现第二个for循环总是不循环啊,结果导致很多不是素数的也跑进来了。是什么问题?

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

int main()
{

int x;
printf("请输入:");
scanf("%d",&x);
for(int i=2; i<=x; i++) //比X小并且大于2的数
{
for(int t=2; t*t<=i; t++)//循环判断是否是素数
{

if(i%t==0)
{
break;
}

else
{
printf("%d\n",i);
break;
}
}

}
return 0;

}

第1个回答  推荐于2017-11-24
请输入:100
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Press any key to continue
#include <stdio.h>
#include <math.h>

int main()
{
int i,t,flag,x;
printf("请输入:");
scanf("%d",&x);
for( i=3; i<=x; i++) //比X小并且大于2的数
{
flag=0;
for( t=2; t<=i/2; t++)//循环判断是否是素数
{
if(i%t==0)
{
flag=1;
break;
}

}
if(flag==0)
printf("%d\n",i);
}
return 0;
}本回答被提问者采纳
第2个回答  2011-06-22
#include <stdio.h>
main()
{
int i,m,k;
scanf("%d",&k);
for(m=2;m<=k;m++)
{for(i=2;i<=m;i++)
if(m%i==0) break;
if(i==m) printf("%d ",m);
}
}本回答被网友采纳
第3个回答  2019-08-09
你的问题出在第二个for循环内部的if
else
语句上,你这样写,等于每一次取到一个
t
值,只要它能被
i
整除就跳出,
而不能被
i
整除就打印.
t
不能被
i
整除并不表示
i
就一定是素数.
在你的程序基础上稍作修改:
#include
int
main()
{
int
x,t;
printf("请输入:");
scanf("%d",&x);
for(int
i=2;
i<=x;
i++)
//比x小并且大于2的数
{
for(t=2;
t*t<=i;
t++)//循环判断是否是素数
{
if(i%t==0)
break;
}
if(t*t>i)
printf("%d\n",i);
}
return
0;
}
第4个回答  2019-01-21
请输入:100
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Press
any
key
to
continue
#include
<stdio.h>
#include
<math.h>
int
main()
{
int
i,t,flag,x;
printf("请输入:");
scanf("%d",&x);
for(
i=3;
i<=x;
i++)
//比X小并且大于2的数
{
flag=0;
for(
t=2;
t<=i/2;
t++)//循环判断是否是素数
{
if(i%t==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%d\n",i);
}
return
0;
}
第5个回答  2020-10-02
请输入:100
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Press
any
key
to
continue
#include
#include
int
main()
{
int
i,t,flag,x;
printf("请输入:");
scanf("%d",&x);
for(
i=3;
i<=x;
i++)
//比X小并且大于2的数
{
flag=0;
for(
t=2;
t<=i/2;
t++)//循环判断是否是
素数
{
if(i%t==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%d\n",i);
}
return
0;
}