检查数字是否为素数,是否为(c ++)

时间:2017-10-08 13:40:04

标签: 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 ++;不会循环,我只是不知道如何用素数循环它......

4 个答案:

答案 0 :(得分:0)

您可以替换:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^capitulardesign.com.br
RewriteRule ^blog/(.*)$ blog/portfolio/$1 [L,R=301]

使用:

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

或甚至(在同一行):

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

答案 1 :(得分:0)

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;
  }
}

答案 2 :(得分:-1)

根据我的理解,下面的代码应该可以完成你的工作

#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

答案 3 :(得分:-1)

我想你想要这样的输出:(像这样: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;
}