C言語の素数を求める異なる解法


C言語は素数の異なる解法を求めて、異なる符号化.異なる符号化は異なる効率に対応する.
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); }

時間テストの後、ブログに追加されますので、ご希望の方は後続に注目してください.