Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取结果1更多,除数计数程序-C_C - Fatal编程技术网

获取结果1更多,除数计数程序-C

获取结果1更多,除数计数程序-C,c,C,编写一个程序,读入一个整数k,然后打印出1到100000(含)之间的正整数的数目,这些整数正好有k个除数 #包括 #包括 #包括 内部主(空){ int k=0,N=0,i=0,r=0,N_因子=0,结果=0; printf(“输入除数:”); /*扫描整数值*/ scanf(“%d”和“&k”); /*循环以计算从1到100000的整数中的除数数*/ 对于(N=1;N一旦删除注释,它对我来说就可以了,因为它们会引起一些问题 已清理代码 #include <stdio.h> #inc

编写一个程序,读入一个整数k,然后打印出1到100000(含)之间的正整数的数目,这些整数正好有k个除数

#包括
#包括
#包括
内部主(空){
int k=0,N=0,i=0,r=0,N_因子=0,结果=0;
printf(“输入除数:”);
/*扫描整数值*/
scanf(“%d”和“&k”);
/*循环以计算从1到100000的整数中的除数数*/

对于(N=1;N一旦删除注释,它对我来说就可以了,因为它们会引起一些问题

已清理代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void){
int k=0, i=0, n_divisors=0, result=0;
double N=0, r=0;
printf("Enter the number of divisors: ");

scanf(" %d",&k);
for(N=1; N<=100000; N++){
    n_divisors=0;
  for(i=1; i<sqrt(N); i++ ){
        r=fmod(N, i);
        if( r==0)
            n_divisors+=2;
 }
            if(n_divisors==k)
            result++;
}
printf("There are %d numbers between 1 and 100000 inclusive which have exactly\n",result);
printf("%d divisors.",k);
return 0;
}
#包括
#包括
#包括
内部主(空){
int k=0,i=0,n_因子=0,结果=0;
双N=0,r=0;
printf(“输入除数:”);
scanf(“%d”和“&k”);

对于(N=1;N,它比你想象的更严重——你可能会得到奇怪的结果,不仅是增加了1。(请参阅:你可以通过添加
2
来计算除数,因为所有数字都只能有偶数除数。)

问题在于这句话:

        for(i=1; i<sqrt(N); i++ ){
因此,代码的一部分将看起来像(我添加了正确的缩进)

//循环以计算从1到100000的整数中的除数数量

对于(N=1;在C中查找奇怪的注释(
>comment/
)。我的编译器不喜欢它。很抱歉评论,正确的答案应该是result=10728。@Omar给出了确切的输入?当k=16,result=10728,范围为1到100000谢谢你的反馈,我觉得这对一系列值来说是很严重的,但不确定它们在哪里。
        for(i=1; i<sqrt(N); i++ ){
        i<sqrt(N)
        if (i * i == N)
            n_divisors++;
// loop to count the no. of divisors in an integer from 1 to 100000
for(N=1; N<=100000; N++){
    n_divisors=0;
    // loop for incrementing the no. divisors in an integer by 2
    for(i=1; i<sqrt(N); i++ ){
        // Testing if i is a divisor of the integer.
        r=(N%i);
        if( r==0)
            n_divisors+=2;
    }
    if (i * i == N)
        n_divisors++;
    //  If the no. of divisors is equal to k, then increment result//
    if(n_divisors==k)
        result++;
    // else reset the value of no. of divisors to 0//
}