c - 欧拉计划 #179

标签 c

问题:找出整数 1 < n < 10^7 的个数,其中 n 和 n + 1 的正约数个数相同。例如,14 的正因子为 1、2、7、14,而 15 的正因子为 1、3、5、15。

我达不到 10^7,因为它对 C 和我来说太大了。我怎样才能用 C 解决这个问题?

#include<stdio.h>
#include<conio.h>

int divisorcount(int);

int main()
{
    int number,divisornumber1,divisornumber2,j=0;

    for(number=1;number<=100;number++){
        divisornumber1=divisorcount(number);
        divisornumber2=divisorcount(number-1);
        if(divisornumber1==divisornumber2){
            printf("%d and %d\n",number-1,number);
            j++;
        }
    }
    printf("\nThere is %d integers.",j);

    getch();
}

int divisorcount(int num)
{
    int i,divi=0;
    for(i=1;i<=(num)/2;i++)
        if(num%i==0)
            divi++;
    return divi;
}

最佳答案

作为如何在一分钟内解决问题的提示,您可以遍历从 2 到 10^7 的每个数字,遍历这些数字的所有倍数并递增 1(忽略 1,因为所有数字都是1) 的倍数。最后,您将获得数组中每个数字的约数(检查您的编译器是否支持 32 位索引)。只需使用最终的线性扫描即可计数。

关于c - 欧拉计划 #179,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660546/

相关文章:

c - 修改 detab 以接受制表位列表

c - OpenCV视频采集和fps问题

c++ - 为什么变量指针包含相同数据类型的地址?

cvWatershed 不支持的格式或格式组合

c - 如何检查void指针是否指向NULL?

c - 模拟中的 stub 函数

c - printf() 和格式说明符链接

等待用户输入特定秒数的 C 程序

python - 如何获得有效的文件权限?

android - C套接字()问题