簡體   English   中英

檢查數字是否為質數,哪個為質數(C ++)

[英]check if number is prime and which is it (c++)

我試圖找出打印質數及其數字(例如:2是1、3是2、5是3、7是4、11是5等等)。 但是我不知道當發現新的素數時如何更新我的總和。 這是代碼:

int main()
{
    int i, j, num, sum;

    num = 1;
    sum = num++;

    for (i = 2; i < 1000; i++) {

        for (j = 2; j <= (i / j); j++)

            if (!(i % j))
                break; // if factor found, not prime

        if (j > (i / j))
            cout << i << " is " << sum << endl;
    }
}

順便說一句,我知道num = 1sum = sum ++; 不會循環,我只是不知道如何用質數循環...

您可以替換:

    if (j > (i / j))
        cout << i << " is " << sum << endl;

與:

    if (j > (i / j)) {
        cout << i << " is " << sum << endl;
        sum++;
    }

甚至(在同一行中)具有:

    if (j > (i / j))
        cout << i << " is " << sum++ << endl;
int sum = 1;

for (int i = 2; i < 1000; i++) {
  bool found=false;
  for (int j = 2; j*j <= i; j++) {
    if (!(i % j)) {
      found=true; // if factor found, not prime
      break;
    }
  }

  if (!found) {
    std::cout << i << " is " << sum << std::endl;
    ++sum;
    break;
  }
}

據我了解,以下代碼應能勝任

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    int num=0,i,j;
    for(i=2;i<1000;i++){
        int flag=0;
        for(j=2;j<=sqrt(i);j++){
            if(i%j==0){
                flag=1;
                break;
            }
        }
        if(flag==0){
            num++;
            cout<<num<<"is"<<i<<"\n";
        }
    }
    return 0;
}

它產生的輸出是

1is2
2is3
3is5
4is7
5is11
6is13
7is17
8is19
9is23

依此類推直到1000

我想您想要這樣的輸出:(像這樣:2是1,3是2,5是3,7是4,11是5依此類推

int main(){

int i, j, num;

num = 1;

for (i = 2; i < 1000; i++) {

    for (j = 2; j <= (i / j); j++)

        if (!(i % j))
            break; // if factor found, not prime

    if (j > (i / j))
        cout << i << " is " << num++ << endl;
}
return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM