首页 > 软件 > c++ 求约数个数

c++ 求约数个数

软件 2024-03-13

C语言 快速求一个自然数的约数的个数

对于这个问题我们只需要暴力从2到根号n这个闭区间的所有整数就行了,如果能整除计数就加2,不过如果这个整数的平方就是输入的n则计数只能加1。最后不要忘记1和其自身。如果根号n不是一个整数,那么我们可以向下取整。算法的整体复杂度是根号n,这个算法的时间消耗与根号n成正比,不过可以确定的是n在32位的整型(或者无符号的整型)数据范围内时间消耗还是比较乐观的。参考代码(C语言实现): #include #include int main(void) { int i; int n; int m; int num; scanf("%d", &n); num = 0;

c语言求一个数的所有约数

#include
intmain(void)
{
floatnum;
intture,ture2;
intn=2;
inti=0;
intj,a[10];
while(scanf("%f",&num)==1)
{
n=2;
i=0;
if((int)num==num)
{
ture=(int)num;
ture2=ture/2;
while(n<=ture2)
{
if(ture%n==0)
{
ture=ture/n;
if(i==0||(i>0&&a[i-1] {
a[i++]=n;
}
}
else
{
n++;
}

}
if(i==0)
printf("%d是素数\n",ture);
else
{
for(j=0;j printf("%d",a[j]);
printf("\n");
}
}
else
printf("小数\n");
getchar();
}
printf("非数字\n");

return0;
}

我觉得逻辑上有点问题,帮你改了一下


运行结果如下:

C语言要求效率高的求一个数约数的个数!!急!!谢了!!

//顺手帮你敲敲
#include
intN;
intcalc(intn)
{
inti,res=2;//1和自身

if(n==1)return1;

for(i=2;i*i<=n;i++)
if(n%i==0)
{
if(n==i*i)res+=1;
elseres+=2;
}
returnres;
}
intmain(intargc,char**argv)
{
scanf("%d",&N);
printf("%d\n",calc(N));
return0;
}

C语言有么高效求一个数的所有约数哦

比较好的办法是先高效地求出质因子分解,再由这个分解来生成所有的约数。 至于怎么高效地进行质因子分解,这个比较复杂,如果仅限于32位整数范围并且要求不高的话可以考虑下面两种方案 1.事先生成65536内的质数表,然后就很容易了。 2.比较偷懒的办法,先把因子2过滤掉,然后遍历奇数。 一楼写的程序显然属于还没入门,算法笨不说,还有语法错。

用C语言求最多约数

可能你的问题在读入文件吧 FILE *fpin; fpin=fopen(path,“r”); char i; int s1=0; int s2=0; i=fgetc(fpin); while(i!=’\0') { s1=s1*10+atoi(i); i=i=fgetc(fpin); } i=fgetc(fpin); while(i!=EOF) { s2=s2*10+atoi(i); i=i=fgetc(fpin); } 这样两个数就存到s1和s2了 未经测试,不敢保证

标签:编程语言 编程 C(编程语言) C语言 信息技术

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18