#include<stdio.h>
#include<math.h>
int main(void)
{
int flag,i,j,n,m,x;
x=0;
scanf("%d", &n);//输入整数n
flag=1;
for(i=0;i<n;i++)//输入n个整数并依次判断是否是素数并输出
{
scanf("%d", &m)
for(j=2;j<sqrt(m);j++)
{
if(m%j==0||m==1)
{
flag=0;
}
}
if(flag==1)
{
x++;
printf("%d ", m);
}
flag=1;
}
if(x==0)
printf("no");
return 0;
}
内循环中if语句好像没有执行︽⊙_⊙︽
另一个问题,内层循环条件换为if(m%j==0|| m==1)为何结果不对٩(๑^o^๑)۶
代码修改如下:
#include <stdio.h>
#include <math.h>
int main()
{
int flag,i,j,m,n,x;
x=0;
scanf("%d",&n);
flag = 1;
for (i=0;i<n;i++)
{
flag = 1;
scanf("%d",&m);
if(m<2)
{
continue;
}
for (j=2;j<=sqrt((double)m);j++) //这里是 <=
{
if(m%j==0)
{
flag = 0;
break;
}
}
if(flag == 1)
{
x++;
printf("%d ",m);
}
}
if (x==0)
printf("no");
return 0;
}