C++ 子例程返回n中非素数的正因子之和
sum子程序有一个参数n,通过它接收一个自然数(n [1,106]). 子例程返回n中非素数的正因子之和。 编写子例程的完整定义。 示例:对于n=12,子例程返回23(23=1+4+6+12) 这是我尝试过的,但没有结果C++ 子例程返回n中非素数的正因子之和,c++,C++,sum子程序有一个参数n,通过它接收一个自然数(n [1,106]). 子例程返回n中非素数的正因子之和。 编写子例程的完整定义。 示例:对于n=12,子例程返回23(23=1+4+6+12) 这是我尝试过的,但没有结果 int suma(int n) { int d,s=0,prim; prim=1; if(n<2) { prim=0; s=n; } for(d=2; d*d<=n; d++)
int suma(int n)
{
int d,s=0,prim;
prim=1;
if(n<2)
{
prim=0;
s=n;
}
for(d=2; d*d<=n; d++)
{
if(n%d==0)
prim=0;
if(prim==0)
s+=d;
}
return s;
}
intsuma(intn)
{
int d,s=0,prim;
prim=1;
if(nI重写了代码的某些部分,使其更清晰,并突出显示了当前代码中缺少的函数
bool isPrime(int d) {
/* TODO */
}
int suma(int n)
{
int s = 1; // you can always start with 1
// n if n is not prime
if (!isPrime(n)) {
s += n;
}
// bool prim=true; // you don't need it
/* if(n<2)
{
// prim=false;
s=n;
}*/ // this block doesn't make sense for me
for(int d = 2; 2 * d <= n; ++d) // the loop has to iterate from 2 to n/2
{
if(n % d == 0) { // d is a positive divisor of n
if(!isPrime(d)) { // check if d is prime
s += d;
}
}
}
return s;
}
bool isPrime(int d){
/*待办事项*/
}
内苏马(内北)
{
int s=1;//始终可以从1开始
//如果n不是素数
如果(!iPrime(n)){
s+=n;
}
//bool prim=true;//您不需要它
/*if(你应该创建一个函数isPrime
,检查一个数字是否为素数。if(n%d==0)
不检查d
是否为素数。这个函数应该包含什么?谢谢,所以muchit不起作用…@tiberiu714什么不起作用?