我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

c语言打出欧拉函数符号 欧拉函数φ100

C语言算一个数欧拉函数,输入0结束

unsigned int ss(unsigned int a)

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、日喀则网站维护、网站推广。

{

unsigned int i;

for(i=2;i*i=a;i++) {

if(a%i==0) break;

}

if(i*i=a) return 0;

else return 1;

}

这个判断素数的函数逻辑是:

i在2~根号a(a是外部传入的需要判断的正整数)之间循环递增1,

如果a能被i整除,则跳出循环,否则继续循环直至i大于根号a退出循环,

退出循环后,判断当前i值是否小于根号a,

小于等于根号a,则是中途退出,返回0(是合数);

大于根号a,则是循环条件完成退出,返回1(是质数)。

函数ss( a)在函数unsigned int oula(unsigned int n)中调用

unsigned int oula(unsigned int n)

{

unsigned int f=n,p;

for(p=2;p=n;p++)

if(ss(p)(n%p==0)) f=f*(1-(1/p));  调用处

return f;

}

输入100,000,000,要看编译器对unsigned int的定义,

如果编译器定义为2 byte,则范围是:0~2^16-1(62353),此时100,000,000会溢出。

如果编译器定义为4 byte,则范围是:0~4294967295,大于100,000,000.此时可以输入,但因数据太大,计算完成要超过2分钟(用去年主流配置的x86电脑测试),输入10,000,000就感觉明显的时延,要约20秒才能输出结果。

测试截图如下图:

另,函数unsigned int oula(unsigned int n)需要改成:

unsigned int oula(unsigned int n)

{

unsigned int f=n,p;

for(p=2;p=n;p++)

if(ss(p)(n%p==0))

//f=f*(1-(1/p));  //修改小数部分丢失问题

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

return f;

}

供参考。

C语言实现欧拉函数

int eular(int n)

{

int ret=1,i; //定义变量

for(i=2;i*i=n;i++) //从i=2开始循环,判定条件为i*i小于等于n,循环一次i增加1

if(n%i==0) //判定条件为n除以i的余数等于0

{

n/=i,ret*=i-1; //n=n/i,ret = ret*(i-1)

while(n%i==0) //当n除以i的余数等于0时执行下面的语句,否则跳过

n/=i,ret*=i;

}

if(n1) //如果n1执行下面语句,否则跳过

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

return ret;

}

直接复制的百度百科的,没具体看是什么功能

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*pnn1)

{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 (n1)

{

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

/*

cout  m  endl;*///放在后面写 

}

//return m;

//图上是用函数做的,所以有返回,这里你直接写在主程序中,所以不要加return m 

cout  m  endl;//输出m的值 

return 0;

}

有什么问题再联系


当前标题:c语言打出欧拉函数符号 欧拉函数φ100
标题网址:http://mswzjz.cn/article/ddoecsp.html

其他资讯