[英]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 = 1
和sum = 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.