急求c语言编程:从键盘任意输入一个整数m,若m不是素数,则计算并输出其所有的因子(不包括1),例如对于

例如对于16,输出2,4,8;否则输出"No divisor! It is a prime number尀n"。
2025-02-26 16:54:13
推荐回答(3个)
回答1:

我这个效率最高,最直观

#include 
#include
void main()
{
_开始:
printf("请输入待分析的正整数\n");
int n待分析;
scanf("%d", &n待分析);
if(n待分析 < 0)
goto _开始;
int n因子上限 = (int) sqrt((double)n待分析);
int n因子个数 = 0;
for(int i = 2; i <= n因子上限; ++i)
{
int n另一个因子 = n待分析 / i;
if(n待分析 == n另一个因子 * i)
{
printf(" (%d, %d) ", i, n另一个因子);
++n因子个数;
}
}
printf("\n");
if(n因子个数 == 0)
printf("No divisor! It is a prime number\n");
goto _开始;
}

程序执行

请输入待分析的正整数
16
(2, 8) (4, 4)
请输入待分析的正整数
256
(2, 128) (4, 64) (8, 32) (16, 16)
请输入待分析的正整数
1024
(2, 512) (4, 256) (8, 128) (16, 64) (32, 32)
请输入待分析的正整数
255
(3, 85) (5, 51) (15, 17)
请输入待分析的正整数

小力庭 2013-4-20 欢迎到我微博上交流

weibo.com/litingsoft

回答2:

#include
void main()
{
int a,b=0;
scanf("%d",&a);
for(int i=2;i {
if(a%i==0)
{
printf("%d\t",i);
b++;
}
}
if(b==0)
printf("No divisor! It is a prime number\n");
}

回答3:

main()

int m,n,i;
scanf(“%d”,&m);
for(i=2,n=0;i
if(m%i==0) {printf(“%5d”,i);n++;}

if(n==0) printf("No divisor! It is a prime number\n");