最大の双子素数を見つける

user5155482

ユーザー入力を求めるACプログラムを作成し、その数の中で最大の双子素数を見つけようとしています。次に、このプログラムは継続的にループし、ユーザーに何度も入力を求め、ユーザーが-1を入力するまで最大の双子素数を見つけ、その後終了します。基本的なコードを書き留めましたが、20や65などの特定の数値を使用すると、まだループを継続させることができません。コードの何が問題なのか理解できません。

私も別の問題を抱えているようです。20の場合、値は(17,19)ではなく(15,17)を示します。明らかにどこかで論理が間違っていますが、どこか正確にはわかりません。

これは私のコードです:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<conio.h>

int prime(int x)
{
    int i,numroot;
    numroot=sqrt(x);
    for(i=2;i<=numroot;i++)
    if(x%i==0){
        return(0);
    }
    return(1);

}

int main()
{
    double N;

    printf("This program prints out all the possible twin primes until a specific number which...\nyou can choose!");
    printf("\nA note of caution: Although this program accepts decimals, the value entered must be between 5 and 10^9,inclusive of the 2 numbers.");
    printf("\nKey in -1 to exit.");
    printf("\nEnter N value upto which twin primes ought to be calculated until: ");
    scanf("%lf",&N);

    while (N!=-1) {
      if (N<5 || N>pow(10,9)) {
          printf("\nNumber not in the valid range was inputted. \nPlease reenter the value: ");
          scanf("%lf",&N);
      }
      else {
          int n;
          n=floor(N);
              int prime(int x);
          int f,originalval;

          originalval=N;
          f=prime(n);
          while(f==0){//Calculates for largest prime number below user input
            n--;
            f=prime(n);
          }
          int smallint=n-2;
          while(prime(smallint)==1){
              n--;
              f=prime(n);
              while(f==0){
                  n--;
                  f=prime(n);
              }
              int smallint=n-2;
    }
    printf("The largest twin prime pair not above %d is (%d,%d)",originalval,smallint,n);
          printf("\nPlease re-enter the value:");
          scanf("%lf",&N);
      }
    }
    printf("\nProgram successfully terminated.");
    return 0;
}
snr

両方の数が素数であることを調達する必要があります。違いは2です。ご存知のように、最初の双子素数は(3,5)です。期待した式が見つかりませんでした。だから、私は解決のために反復を使用しました。コードを見れば理解できます。

#include <stdio.h>
#include <math.h>

int twinPrime(int m);
int IsPrime(unsigned int number);


int main()
{
    double N;
    int floored;
    int prime;

    printf("This program prints out all the possible twin primes"
           "until a specific number which...\nyou can choose!");
    printf("\nA note of caution: Although this program accepts decimals, "
           "the value entered must be between 5 and 10^9,inclusive of the 2 numbers.");
    printf("\nKey in -1 to exit.");
    printf("\nEnter N value upto which twin primes ought to be calculated until: ");
    scanf("%lf",&N);

    while (N != -1)
    {
        if (N < 5 || N > pow(10,9))
        {
            printf("\nNumber not in the valid range was inputted. \n"
                   "Please reenter the value: ");
            scanf("%lf",&N);
        }
        else
        {
            floored = floor(N);
            prime = twinPrime(floored);
            printf("The largest twin prime pair not above %d is (%d,%d)",floored,prime - 2,prime);
            printf("\nPlease re-enter the value:");
            scanf("%lf",&N);
        }
    }
    printf("\nProgram successfully terminated.");
    return 0;
}

int twinPrime(int m)
{
    int p = 3;
    int q = 5;

    for (; q < m - 1; q += 2)
    {
        if (IsPrime(q))
        {
            if (q - p == 2)
            {
                continue;
            }
            p = q;
        }
    }
    return q;
}

int IsPrime(unsigned int number)
{
    if (number <= 1) return 0; // zero and one are not prime
    if ((number > 2) && ((number % 2) == 0)) return 0; //no even number is prime number (bar 2)
    unsigned int i;
    for (i=2; i*i<=number; i++)
    {
        if (number % i == 0) return 0;
    }
    return 1;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

双子素数といとこ素数のメンバーである素数を見つける方法は?

分類Dev

コンストラクターで双子素数を見つける

分類Dev

最大の素数を見つける方法

分類Dev

最初のm個の双子素数をどのように見つけますか?

分類Dev

数の最大の素数を見つけるアルゴリズム

分類Dev

ラケット-範囲内で最大の素数を見つける

分類Dev

最大の素数(JS)を見つけて印刷する

分類Dev

Fortran でユーザーが決定した範囲から双子素数を見つける方法

分類Dev

最大の素数、1を除く最小の因数、数の合計を見つける方法

分類Dev

数の最大の素数を見つけるためのコードの理解

分類Dev

n番目の素数を見つける

分類Dev

最大の素数除数を見つける(可能な限り最速のプログラム)

分類Dev

最大の素数を見つけるためのTSQLプログラム

分類Dev

素数を見つける方法

分類Dev

素数を見つける方法

分類Dev

与えられた数より下の2つの素数の最大積を見つける

分類Dev

プロジェクトオイラーの課題3:多数の最大の素数因子を見つける

分類Dev

素数の因子を持つ数を見つける

分類Dev

varcharの最大値を見つける

分類Dev

範囲の最大値を見つける

分類Dev

1の最大長方形を見つける

分類Dev

行の最大数を見つける

分類Dev

最大人口の都市を見つける

分類Dev

列で最大の数を見つける

分類Dev

最大の降順を見つける

分類Dev

行の最大値を見つける

分類Dev

最大数のQtを見つける

分類Dev

文字列の最大値を見つける

分類Dev

配列の最大値を見つける

Related 関連記事

  1. 1

    双子素数といとこ素数のメンバーである素数を見つける方法は?

  2. 2

    コンストラクターで双子素数を見つける

  3. 3

    最大の素数を見つける方法

  4. 4

    最初のm個の双子素数をどのように見つけますか?

  5. 5

    数の最大の素数を見つけるアルゴリズム

  6. 6

    ラケット-範囲内で最大の素数を見つける

  7. 7

    最大の素数(JS)を見つけて印刷する

  8. 8

    Fortran でユーザーが決定した範囲から双子素数を見つける方法

  9. 9

    最大の素数、1を除く最小の因数、数の合計を見つける方法

  10. 10

    数の最大の素数を見つけるためのコードの理解

  11. 11

    n番目の素数を見つける

  12. 12

    最大の素数除数を見つける(可能な限り最速のプログラム)

  13. 13

    最大の素数を見つけるためのTSQLプログラム

  14. 14

    素数を見つける方法

  15. 15

    素数を見つける方法

  16. 16

    与えられた数より下の2つの素数の最大積を見つける

  17. 17

    プロジェクトオイラーの課題3:多数の最大の素数因子を見つける

  18. 18

    素数の因子を持つ数を見つける

  19. 19

    varcharの最大値を見つける

  20. 20

    範囲の最大値を見つける

  21. 21

    1の最大長方形を見つける

  22. 22

    行の最大数を見つける

  23. 23

    最大人口の都市を見つける

  24. 24

    列で最大の数を見つける

  25. 25

    最大の降順を見つける

  26. 26

    行の最大値を見つける

  27. 27

    最大数のQtを見つける

  28. 28

    文字列の最大値を見つける

  29. 29

    配列の最大値を見つける

ホットタグ

アーカイブ