fabvy12 发表于 2019-10-22 00:16:59

一道C语言的小疑问

疑问:
如果我写一个这样的代码

如 if (a/i==(int) a/i)

是不是这个代码可以成立,我的目的是想,早出某个数的因数,

比如 6,的因数有 1.2.3.这样子。

如果不行,请指点一下该怎么求出一个数的因数。

求助!

jackz007 发表于 2019-10-22 00:50:43

本帖最后由 jackz007 于 2019-10-22 00:56 编辑

      标准答案是取余,例如,6 % 2 = 0,6 % 3 = 0 , 6 % 4 = 2 , 6 % 5 = 1,就是说,6 可以被 2、3 整除,因为余数为 0,不可以被 4、5 整除,因为余数不为 0 。所以,2、3 是 6 的因数,4、5 就不是。
#include <stdio.h>

void factor(int m , int * array)
{
      int d , k                                                            ;
      for(d = 0 , k = 2 ; k < m ; k ++) if(! (m % k)) array = k    ;
      array = d                                                         ;
}

main(void)
{
      int array , k , m                                                 ;
      factor(6 , array)                                                      ;
      if(array) {
                for(k = 0 ; k < array ; k ++) printf("%d\n" , array) ;
      } else {
                printf("prime\n")                                              ;
      }
}

bin554385863 发表于 2019-10-22 01:37:07

本帖最后由 bin554385863 于 2019-10-22 01:43 编辑

#include <stdio.h>
void func(unsigned int n)
{
    int count = 0;
    /*统计因数的个数*/
    for (size_t i = 1; i <= n; ++i)
    {
      if (n % i == 0)
      {
            count++;
      }
    }
    /*定义数组保存因数*/
    int arr;
    for (size_t i = 1, j = 0; i <= n, j < count; i++)
    {
      if (n % i == 0)
      {
            arr = n / i;
            j++;
      }
    }
    /*输出*/
    for (size_t i = 0; i < count; i++)
    {
      printf("%d", arr);
    }
    printf("\n");
}
int main(int argc, char const *argv[])
{
    int a = 1;
    while (1)
    {
      scanf("%d", &a);
      if (a < 1)//任意小于1的数都可以作为结束条件
      {
            printf("程序结束");
            break;
      }
      func(a);
      printf("\n");
    }
    return 0;
}

------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.16299.1087]
(c) 2017 Microsoft Corporation。保留所有权利。

E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.0\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-mdgsvohv.qcv --stdout=Microsoft-MIEngine-Out-soj42rr1.jqn --stderr=Microsoft-MIEngine-Error-stlm45ls.j35 --pid=Microsoft-MIEngine-Pid-l4pwj1cr.4vi "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
10
10521

30
30151065321

900
900450300225180150100907560504536302520181512109654321

0
程序结束

E:\Users\86184\Documents\Code>

fabvy12 发表于 2019-10-22 13:31:02

jackz007 发表于 2019-10-22 00:50
标准答案是取余,例如,6 % 2 = 0,6 % 3 = 0 , 6 % 4 = 2 , 6 % 5 = 1,就是说,6 可以被 2、3 整 ...

谢谢!

fabvy12 发表于 2019-10-22 13:31:33

bin554385863 发表于 2019-10-22 01:37
------------------------------------------------------------------------------
Microsoft Windows...

感谢!
页: [1]
查看完整版本: 一道C语言的小疑问