質問: 0; if(is_prime==1) printf("素数です"); else printf("素数ではありません"); return 0; } ~~~~~~~~~~~~~~~ 私はこうなると考えています。どこが間違っているでしょうか? numが0のとき、2<=0となり、素数 numが1のとき、2<=0.5となり、素数でない numが2のとき、2<=1となり、素数でない numが3のとき、2<=1.5となり、素数でない
回答: for(i=2; i<=num/2; i=i+1) は入力した数/2になるまでiを+1しながらループするという意味です (必要最小限回そうということで/2をしています) ここでは素数かどうかは判断していません。 実際に素数かどうかを判断しているのは、 if((num%i)==0) この部分で、で除算した時に余りがあるか無いかの判断になります ループに入る前に numが0のときis_prime = 1としておき、 除算した時に余りがあるか割る数を+1していきながらチェック 除算した時に余りがなければ(素数ではない)is_prime = 0となります numが0~3のとき、ループは即抜け、is_prime = 1なので素数