从键盘任意输入一个整数m,若m不是素数则计算输出所有的因子(不包括1),例如对于16,输出2.4.8;否则输出“No divisor! It is a prime number”。
#include<stdio.h>
#include<math.h>
int isprime(int n)
{int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)return 0;
}
int main()
{int n,i,j=0;
scanf("%d",&n);
if(isprime(n))
printf("No divisor! %d is a prime number",n);
else
{i=2;
while(i<=n/2)
{
if(n%i==0)
{
if(j)printf("、");
printf("%d",i);
j=1;
}
i++;
}
}
return 0;
}
作为一个初学者的回答。。。
#include
#include
#define MAX 1024
int main(int argc, char **argv)
{
char num[10]; //接收输入数字
int result[MAX]; //存储结果
int i, n, k, r, index = 0;
scanf("%s", num); //输入
n = atoi(num); //转int
if (n % 2 == 0) //取个中间值 k
k = n / 2;
else
k = n / 2 + 1;
for (i = 2; i < k; i++) //只需要循环一半所以取了个中间值k
{
if (n % i == 0) //取余,看看能不能整除,如果能,继续
{
r = n / i; //求商
if (r == i) //如果 商=除数 那么只需要存一次就好了
{
result[index] = r;
index++;
} else
{ //如果 商 != 除数 那么两个都存起来
result[index] = i;
index++;
result[index] = r;
index++;
}
}
}
if (index == 0)
{
printf("No divisor! It is a prime number");
} else
{
for (i = 0; i < index; i++)
{
printf("%d ", result[i]);
}
}
return 0;
}
...............咋样