这个程序需要将isPrime=1放在第一个for后吗

img


我刚接触c语言不太熟练,希望有人能告诉我这个程序在第一个for后面需不需要将1赋值给isPrime

不需要,因为判断x是否为素数,只需要将isPrime赋值一次即可, 后面再根据区间2到(x-1)的数是否可以整除x来调整isPrime的值,循环结束再根据isPrime是否等于1,来打印是否素数,所以不需要将它放置到for循环中。

测试如下:


#include <stdio.h>

int main(void){
    
    int x;
    scanf("%d",&x); // 从输入获取一个整数,存储到int变量x中 
    int i;
    int isPrime=1;  //  素数标志,默认为1,表示是素数
 
     // 如果输入的数会小于2,则需要再这个判断,因为小于2的数都不是素数,如果输入的数都大于等于2,则这个判可以去除 
     if(x<2){
         isPrime=0;  //小于2的数,素数标志置0 
     } 
    
    for(i=2;i<x;i++){  // 遍历1区间 2到(x-1)之间所有的数 
        
        if(x%i==0){  // 如果区间的任意一个数可以整除x,则x不是素数,素数标志置0 
            isPrime=0;
            break;
        }
        
    }
    
    if(isPrime==1){  // 如果素数标志为1,则打印"是素数"
        printf("是素数\n");
    }else{   // 如果素数标志不等于1,则打印"不是素数 "
        printf("不是素数\n");
    }
    
    return 0;
    
} 

img

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^