为什么会有if(i<n)?不能删去吗?这个if是不是和下面这个else配对?

#include<studio.h>
int main()
{
int n,i;
printf("please enter a integer number,n=?");
scanf("%d",&n);
for(i=2;i<n;i++)
if(n%i==0)break;
if(i<n)printf("%d is not a prime number.\n");
else printf("%d is a prime number.\n");
return 0;

}

if(n%i==0)break;这个是上面的for循环中的代码。

if(i<n)printf("%d is not a prime number.\n");
else printf("%d is a prime number.\n");
这个if和else是一对。规范格式应该是:

#include<studio.h>
int main()
{
  int n,i;
  printf("please enter a integer number,n=?");
  scanf("%d",&n);
  for(i=2;i<n;i++)
  {
    if(n%i==0)//如果2-n有能被n整数的数,那么n就不是素数,结束循环
      break;
  }
  
  if(i<n)//提前结束循环,说明有能被n整数的数,所以n不是素数
    printf("%d is not a prime number.\n");
  else //遍历完所有2-n的数,没有被n整数的数,n是素数
    printf("%d is a prime number.\n");
  return 0;
}

你这个代码好像不完整,请点击代码段插入。

img

if(i<=k)是和下面的else配对的
因为在循环中,当i%2==0时,只是简单的break,所以它必须依赖循环外部的处理来判断是否为素数。一般都在if(i%2==0)时,直接设置一个不是素数的标志变量就行了。
当i%2==0时,跳出循环,这时候i一定满足<=k的条件,那么在循环外如果发现i<=k,那么一定是break跳出的,所以可以判定这个数不是素数,如果循环执行完成后退出的循环,那么i一定等于k+1,就走到else认为该数是个素数了

请用 ‘代码块’ 提交代码。