C言語の素数を求める異なる解法
1963 ワード
C言語は素数の異なる解法を求めて、異なる符号化.異なる符号化は異なる効率に対応する.
1、aからbまでの素数を求める:
(1)一般的:
(2)、効率的:
2、bより小さい素数を求める:
1つ目は求めず、2つ目で直接出します.
3、bより小さい最大素数:
時間テストの後、ブログに追加されますので、ご希望の方は後続に注目してください.
1、aからbまでの素数を求める:
(1)一般的:
#include "stdio.h"
void main()
{
int a,b;
int i,n;
int flag=1;
printf(" :");
scanf("%d",&a);
printf(" :");
scanf("%d",&b);
printf("%d %d :",a,b);
for (i=a;i<=b;i++) {
flag=1;
for (n=2;n<i;n++) {
if (i%n==0) {
flag=0;
}
}
if ((flag==1)&&(i!=1)) {
printf("%d
",i);
}
}
}
(2)、効率的:
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, n;
int na,nb;
int i;
printf("please input a:
");
scanf("%d",&na);
printf("please input b:
");
scanf("%d",&nb);
i=1;
for (a =na; a <=nb; a++)
{
for (b = 2; b <= sqrt(a) && a % b != 0; b++);
if (b > sqrt(a)){ // , 。
printf("%d:%d
", i,a);
i++;
}
}
}
2、bより小さい素数を求める:
1つ目は求めず、2つ目で直接出します.
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, n;
int i;
printf("please input n:
");
scanf("%d",&n);
i=1;
for (a =2; a <=n; a++)
{
for (b = 2; b <= sqrt(a) && a % b != 0; b++);
if (b > sqrt(a)){
printf("%d:%d
", i,a);
i++;
}
}
}
3、bより小さい最大素数:
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, n;
int i,j=1;
printf("please input n:
");
scanf("%d",&n);
i=1;
for (a =2; a <=n; a++)
{
for (b = 2; b <= sqrt(a) && a % b != 0; b++);
if (b > sqrt(a)){
j=a;
i++;
}
}
printf("answer:%d
",j);
}
時間テストの後、ブログに追加されますので、ご希望の方は後続に注目してください.