对此很陌生.质数函数运动建议

New to this. Prime number function exercise advice

本文关键字:函数 运动      更新时间:2023-10-16

如果这不是问这个问题的最佳地点,请引导我到最好的地方。在我最近写的一本书中,有一个练习,要求在 main 中编写以测试从 2 到 20 的所有数字,并将结果打印在单独的行上。它希望我使用质数函数并在 main 中使用 for 循环。我被困住了,这就是我到目前为止所拥有的。

(这是修订后的代码,我仍在努力让它工作。

#include <iostream>
#include <cmath>
using namespace std;
int prime(int x);
int main() {
    int i;

    for(i=2; i <= 22; i++) 
        cout << prime(i) << endl;
    return 0;
}
int prime(int x) {
int i;
for(i=2; i <= sqrt((double)x); i++) {
    if(x % i == 0)
    return false ;
}
    return true;
}

表达式 i % x 是自 i < sqrt((double) x) 年以来i除以x的余数,i % x总是等于 0

您必须将表达式更改为 x % i == 0 以检查x是否可以被i整除,以便它不是素数。

此外,您还必须添加一个if,以便仅在x % i == 0时才返回false。 所以:

if (x % i == 0){
    return false;
}

更改

i % x == 0;

if (x % i == 0) // you want to check this true/false, so use it inside if()
 #include <iostream>
 using namespace std;
 bool isPrime(int n){
if(n%2==0) return false;
int m=3;
while(m*m<n){
    if(n%m==0) return false;
    m += 2;
}
return true;
 }
 int main(){
int input;
cout<<"Please enter an integer: ";
cin>>input;
if(isPrime(input))
    cout<<input<<" is a prime number.n";
else
    cout<<input<<" is not a prime number.n";
return 0;
 }

您缺少sqrt的库<cmath>和 ";" 在素数函数的分项中这是工作代码:

#include <iostream>
#include <cmath>
using namespace std;
int prime(int x);
int main() {
    int i;

    for(i=2; i <= 22; i++)
        cout << prime(i) << endl;
    return 0;
}
int prime(int x) {
    int i;
    int y= sqrt((double)x);
    for(i=2; i <= y; ++i) {
        if (x % i == 0)
        return false ;
    }
    return true;
}