#include <stdio.h> main() { int n, i, p, c; c = 0; for(n=2; n<=1000; n++){ p = 0; for(i=2; i<n; i++){ if(n % i == 0){ p++; } } if(p == 0){ c++; } } printf("%d primes between 2 and 1000\n", c); }この課題(素数)が難しい, という声が多数あるようです.
まず, 自分が手作業やるのだったらどのようにするだろうかを考えます. たとえば 97 という数が与えられたとしたら,
すべてで割れなかったら, 素数と判定しますよね. ここまで考えれば, あとはプログラムでループを組んで順に割算をしていき, 「すべてで割れなかった」ことを調べればよい. そのためには,
「割り切れてしまった回数」をかぞえておくことにすれば, ループが終った時にその回数が 0 かどうかで 判断をつけることができます.