ヒント: /* この記事は学習と共有のみを目的としています。不備がある場合は、改善のためにプライベート メッセージを送ってください*/
記事ディレクトリ
素数の定義
1. 素数は素数とも呼ばれます。素数とは「1 より大きく、1 とその数自体でしか割り切れない数」を指します。
2. 素数は、「1 より大きく、約数が 1 とそれ自体の 2 つだけを持つ、正の整数の範囲内の数」と同等に表現することもできます。
100 ~ 200 の間の素数を見つける
提示:以下是本篇文章正文内容,下面案例可供参考
この質問を例として、次のような質問があります。
100 ~ 200 の間の素数を見つけて、この範囲内に素数がいくつあるか計算しますか?
最初のオプション
# include <stdio.h>
int main()
{
int i;
//先求出100-200之间的所有的数
//这里给出一个for循环
int count = 0;
for(i = 100; i < 200; i++)
{
int j; //定义一个变量j用来表示因子
for( j = 2; j < i ;j++) //用 2 到 i-1 之间的因子去试除i
{
if(i % j ==0)
{
break; //若能整除,则说明一定不是素数,跳出循环
}
}
//当上一个for循环任意一个数i都不能被j(2到i-1)整除,也即j==i时,跳出for循环
if (j == i) //此时因子i等于一个数本身,则说明是素数
{
count++;
printf("%d ",i);//打印素数
}
}
printf("\ncount = %d\n",count);//所有素数求出来之后,打印素数的个数
return 0;
}
2 番目のオプション
この解決策は前の解決策と似ています。フラグを定義してマークします。1 の場合は素数を意味し、0 の場合は素数ではないことを意味します。
# include <stdio.h>
int main()
{
int i;
//先求出100-200之间的所有的数
//这里给出一个for循环
int count = 0;
for(i = 100; i < 200; i++)
{
int j; //定义一个变量j用来表示因子
int flag = 1;//此时定义一个flag标记,表示假设i是素数
for( j = 2; j < i ;j++) //用 2 到 i-1 之间的因子去试除i
{
if(i % j ==0)
{
flag = 0;若能整除,则说明一定不是素数,把flag置为0
break;
}
}
//当上一个for循环任意一个数i都不能被j(2到i-1)整除,也即j==i时,跳出for循环
if (flag == 1) //此时判断如果flag还是为1,则说明i是素数
{
count++;
printf("%d ",i);//打印素数
}
}
printf("\ncount = %d\n",count);//所有素数求出来之后,打印素数的个数
return 0;
}
3 番目のオプション
# include <stdio.h>
# include <math.h>
int main()
{
int i;
//先求出100-200之间的所有的数
//这里给出一个for循环
int count = 0;
for(i = 101; i < 200; i += 2) // 因为偶数一定不是素数,这里缩小范围,在奇数中去找素数
{
int j; //定义一个变量j用来表示因子
int flag = 1;//此时定义一个flag标记,表示假设i是素数
//假设一个数m= a*b,那么这个数m它的因子a和b中一定至少有一个因子小于等于m的开平方数
//拿12这个数来说 它的因子所有表示如下: 12=1*12=2*6=3*4=4*3=6*2=12*1
//12的开平方数是2√3(2倍的根3), 2√3是大于3小于4的,那么用1,2,3去试除12之后,那么4,6,12就没必要再去试除12了
//所以这里的因子范围给到 3 到 sqrt(i) ,sqrt()是C语言的一个库函数,用来求给定值的平方根,需要引用头文件<math.h>
for( j = 2; j <= sqrt(i) ;j++)
{
if(i % j == 0)
{
flag = 0;若能整除,则说明一定不是素数,把flag置为0
break;
}
}
//当上一个for循环任意一个数i都不能被j(2到i-1)整除,也即j==i时,跳出for循环
if (flag == 1) //此时判断如果flag还是为1,则说明i是素数
{
count++;
printf("%d ",i);//打印素数
}
}
printf("\ncount = %d\n",count);//所有素数求出来之后,打印素数的个数
return 0;
}