请输入: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;
}
#include
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);
}
}
你的问题出在第二个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;
}
请输入: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;
}
请输入: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;
}