一道C语言的小疑问
疑问:如果我写一个这样的代码
如 if (a/i==(int) a/i)
是不是这个代码可以成立,我的目的是想,早出某个数的因数,
比如 6,的因数有 1.2.3.这样子。
如果不行,请指点一下该怎么求出一个数的因数。
求助! 本帖最后由 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: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> jackz007 发表于 2019-10-22 00:50
标准答案是取余,例如,6 % 2 = 0,6 % 3 = 0 , 6 % 4 = 2 , 6 % 5 = 1,就是说,6 可以被 2、3 整 ...
谢谢! bin554385863 发表于 2019-10-22 01:37
------------------------------------------------------------------------------
Microsoft Windows...
感谢!
页:
[1]