以下作业题,请各位帮忙指点,因刚学c++,请各位老师在程序尽量多些注释说明。谢谢!
正整数n是素数,如果它只能由1和本身整除。
(1)写一个名为ISPrime的C++函数,它取正整数参数,如果参数为Prime,则返回true,否则返回false。假设参数大于1
(2)写一个C++函数,名为SUFFPrimes,取正整数参数n,并返回第一N素数的和。例如,SUFFPrimes(6)必须返回41,这是前6个素数的总和:
2+3+5+7+11+13=41。您必须使用在部分(1)中定义的ISPrime函数来定义函数SUFFPROMES。
原题:A positive integer number n is prime if it is divisible by ONLY 1 and
itself.
a. Write a C++ function named isPrime that takes a positive
integer argument and returns true if the argument is prime and returns
false otherwis。 Assume the argument is greater than 1.
b.Write a C++ function named sumOfPrimes that takes a positive integer
argument n and returns the sum of the first n prime numbers. For example,
sumOfPrimes(6) must return 41 , which is the sum of the first 6 prime numbers:
2+3+5+7+11+13 = 41. You must use the isPrime function you defined in part (a) to define the function sumOfPrimes.
第二题
#include <stdio.h>
#include <iostream>
using namespace std;
int SUFFPrime(const int & n)
{
int sum = 0;
if(n <= 0)
{
return sum;
}
int i = 2;
int count = 0;
int num = 2;
//素数就是指 因子只有自己和1
//i 从二开始
//用num除以i,若是可以除尽,且i小于num 就说明num 存在别的因子
//所以num就不是素数
//外层循环用来控制个数,个数应该小于 n
//内层循环用来判断当前数字是不是素数
while(count < n)
{
for(i = 2;i < num ; ++i)
{
if(num % i == 0)
{
break;
//若可以除尽,就跳出循环
}
}
if(i == num)
{
//如果出循环且i值已经等于num
//说明是素数
count++;
sum += num;
}
//否则不是素数
//就看下一个数是不是素数
num++;
}
return sum;
}
int main()
{
int n = 7;
int sum = SUFFPrime(n);
printf("sum: %d\n",sum);
return 0;
}
第一题
#include <stdio.h>
#include <iostream>
using namespace std;
bool ISPrime(const int & num)
{
if(num <=1)
{
return false;
}
int i = 2;
//素数就是指 因子只有自己和1
//i 从二开始
//用num除以i,若是可以除尽,且i小于num 就说明num 存在别的因子
//所以num就不是素数
for(i = 2; i < num; ++i)
{
if(num % i == 0)
{
break;
//若可以除尽,就跳出循环
}
}
if(i == num)
{
return true;
//如果出循环且i值已经等于num
//说明是素数
}
return false;
//否则不是素数
}
int main()
{
int n = 19;
bool ret = ISPrime(n);
if(ret)
{
printf("Is Prime\n");
}
else
{
printf("Not Prime\n");
}
return 0;
}
#include <iostream>
#include <cmath>
/*判断素数
*
* number 要进行判断的数
* 返回 是否是素数
* */
bool isPrime(int number){
//从2开始找能被number整除的因子,如果能找到则说明这个数不是素数
//如果遍历到number的平方根还没找到能被整除的因子,则之后的因子也一定不会被整除
for (int i = 2; i <= static_cast<int>(sqrt(number)); ++i) {
if (number % i == 0){
return false;
}
}
return true;
}
/* 计算前number个素数的和
*
* number 前number个素数
* 返回 前number个素数的和
* */
int sumOfPrimes(int number){
//要返回的素数之和
int sum = 0;
//当前已经找到的素数的数量
int count = 0;
//当前的数的值
int current_number = 2;
//如果找到的素数的数量小于要计算的素数的数量则一直循环
while (count < number){
//如果是素数
if (isPrime(current_number)){
//找到的素数的数量加一
count++;
//算总和
sum += current_number;
}
current_number++;
}
return sum;
}
int main(){
std::cout<<sumOfPrimes(6)<<std::endl;
return 0;
}
#include
using namespace std;
bool ISPrime(int num)
{
for(int i=2;i*i<=num;i++)
{
if(num%i==0)
return 0;
return 1;
}
}
int SUFFPrimes(int n)
{
int s=0;
int j=0;
for(int i=2;;i++)
{
if(ISPrime(i))
{
j++;
s=s+i;
}
if(j==n)
break;
}
return s;
}
int main()
{
int n;
cin>>n;
cout<<SUFFPrimes(n);
return 0;
}