关于素数的问题(问题在第 19 行):
/*1*/ #include<stdio.h>/*2*/ int main(void)
/*3*/ {
/*4*/ int num;//输入的整数
/*5*/ int isprime;//素数的标志
/*6*/ int div;//可能的约数
/*7*/ printf("please enter a number to analyze:q to quit\n");
/*8*/ while(scanf("%d",&num)==1)
/*9*/ {
/*10*/ for(div=2,isprime=1;(div*div)<=num;div++)//for循环开始的时候isprime等于1,观察一下for结束的时候是不是仍然等于1。
/*11*/ {
/*12*/ if(num%div==0)//如果输入的数是素数,则不会进入if语句。
/*13*/ if(div*div!=num)
/*14*/ printf("%d能被%d和%d整除\n",num,div,num/div);
/*15*/ else
/*16*/ printf("%d能被%d整除\n",num,div);
/*17*/ isprime=0;//在for循环里面设置一个相反的值
/*18*/ }
/*19*/ printf("此时isprime的值是%d\n",isprime);//打印isprime的值。想知道输入的数有没有进入过for循环/n
//结果无论输入素数还是非素数,isprime的值都是for循环里面的值(此处为0)。为什么????????
/*20*/ if(isprime==0)
/*21*/ printf("你输入的%d不是素数。\n",num);
/*22*/ else
/*23*/ printf("你输入的%d是素数。\n",num);
/*24*/ printf("please enter a number to analyze:q to quit\n");
/*25*/ }
/*26*/ printf("\n");
/*27*/ return 0;
/*28*/ }