作业帮 > 综合 > 作业

c++欧拉函数按照这个图编,我写的是#include <iostream>#include <cmat

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 16:41:59
c++欧拉函数



按照这个图编,我写的是

#include <iostream>

#include <cmath>

#include <iomanip>

using namespace std;

int main()

{

int m;

int n;

int p = 2;

cout<< "请输入数值:" << endl;

cin >> n;

m = n;

int k = 0;

if (p*p>n&&n>1)

{


cout << m << endl;

}

while (p*p <= n,k = 0)

{


while (n / p == 0)

{

n /= p; k++;

}

if (k >= 1)

{

m = m*(p - 1) / p;


}

p++;

}

if (n>1)

{

m = m*(n - 1) / n;

cout << m << endl;

}


return m;

cout << m << endl;





return 0;

}

,反正是不对的,求各位大神指教


#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int m;
int n;
int p = 2;
cout<< "请输入数值:" << endl;
cin >> n;
m = n;
int k = 0;
/*
if (p*p>n&&n>1)
{cout << m << endl;
}*///放在后面写 
while (p*p <= n)
//不能写成 p*p <= n,k=0,这样写是逗号表达式,表达式的值取最后一个表达式的值k=0,表达式恒假,导致循环一次也不做 
{
k = 0
while (p / n != 0)//除号两边写反了,循环的条件是p/n不为0 
{
n /= p; k++;
}
if (k >= 1)
{
m = m*(p - 1) / p;
}
p++;
}
if (n>1)
{
m = m*(n - 1) / n;
/*
cout << m << endl;*///放在后面写 
}

//return m;
//图上是用函数做的,所以有返回,这里你直接写在主程序中,所以不要加return m 
cout << m << endl;//输出m的值 
return 0;
}
有什么问题再联系
再问: 麻烦讲一下什么是逗号表达式么?
再答: 比如说表达式a=5,b=2,a+b,a*b就是1个逗号表达式,它是由多个表达式组成,每个表达式中间用逗号隔开,逗号表达式的执行顺序是从左到右,也就是上面这个例子,先做a=5,在做b=2, 然后执行a+b,最后执行a*b,这个逗号表达式的值是最后一个表达式的值,也就是a*b的值,由于第1个和第2个将a设为5,b设为2,第3个表达式只计算并没有改变a和b的值,所以最后1个表达式a*b=5*2=10,所以表达式a=5,b=2,a+b,a*b的值为10
再问: while(p*p