確認したいのでやってみてください
0から50までの素数を列挙するプログラムを作成せよ。
素数→0,1を除く、2つしか約数がない数
if switch for while do-while 配列 をなるべく使う。
<実行結果>
0~50までの素数は以下となります
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
#include <stdio.h>
int isPrime(int n)
{
int i;
if (n < 2) return 0;
for (i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main(void)
{
int n;
printf("0から50までの素数は以下となります\n");
for (n = 0; n <= 50; n++) {
if (isPrime(n)) printf("%d\n", n);
}
return 0;
}
ある数nにおいて、n/1、n/2、n/3、n/4、‥‥n/n-1、n/nを順に計算して、割り切れるところが2つ(n/1とn/n)だけなら素数って判断すればいいんでしょ?
で、n=2からn=50まで繰り返せば終了。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("2\n3\n5\n7\n11\n13\n17\n19\n23\n29\n31\n37\n41\n43\n47\n");
return EXIT_SUCCESS;
}
#include <iostream>
#include <algorithm>
#include <iterator>
int main()
{
static const int a[] =
{
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47
};
std::copy(&a[0], &a[sizeof a / sizeof a[0]], std::ostream_iterator<int>(std::cout, "\n"));
return 0;
}
> if switch for while do-while 配列 をなるべく使う。
配列だけ使ってみました。
- 最新から表示
- |
- 回答順に表示













