当前位置: 代码迷 >> C语言 >> 学友来解释一下这个编程题(和数学有关系)
  详细解决方案

学友来解释一下这个编程题(和数学有关系)

热度:443   发布时间:2006-02-27 00:01:00.0
学友来解释一下这个编程题(和数学有关系)

下列给定程序的功能是:读入一个整数k(2<=k<=10000),打印它所有质因子(即所有为素数的因子)。例如,若输入整数2310,则输出:2、3、5、7、11。

#include "conio.h"
#include "stdio.h"
IsPrime ( int n )
{
int i, m;
m=1;

for(i=2;i<n;i++)
if (!(n%i))
{
m=0;
break;
}
return(m);
}

main()
{
int j, k;
clrscr();
printf("\nplease enter an integer number between 2 and 10000:");
scanf("%d",&k);
printf("\n\nThe prime factor(s) of %d is(are):",k);
for(j=2;j<k;j++)
if((!(k%j))&&(IsPrime(j)))
printf(" %4d,",j);
printf("\n");
}

哪位好心的学友能解释一下这个程序?主要是加粗部分。而且质因子这个词我完全不理解,请详细讲一下,偶数学没学好。。。。。

搜索更多相关的解决方案: 数学  学友  关系  解释  

----------------解决方案--------------------------------------------------------
IsPrime ( int n ) /*自定义函数名,建议在函数名前加int*/
{
int i, m;
m=1;

for(i=2;i<n;i++) /*从2开始循环*/
if (!(n%i)) /*就是如果n可以整除i,执行下面的代码*/
{
m=0;
break;
}
return(m); /*m的值返回是0的话,那就是n不是素数嘛*/
} /*,如果返回1,说明n不可以整除比它小的任何正数(除1),那它就是素数*/

----------------解决方案--------------------------------------------------------
for(j=2;j<k;j++)
if((!(k%j))&&(IsPrime(j))) /*就是k可以整除j,且j是素数,那j就是k的素因子*/
printf(" %4d,",j);


----------------解决方案--------------------------------------------------------
以下是引用飞扬白鸽在2006-2-27 0:01:00的发言:

下列给定程序的功能是:读入一个整数k(2<=k<=10000),打印它所有质因子(即所有为素数的因子)。例如,若输入整数2310,则输出:2、3、5、7、11。

#include "conio.h"
#include "stdio.h"
IsPrime ( int n ) 判断一个数n是否为素数,如果不是就返回一个0;如果是就返回1;
{
int i, m;
m=1;

for(i=2;i<n;i++)
if (!(n%i))
{
m=0;
break;
}
return(m);
}

main()
{
int j, k;
clrscr();
printf("\nplease enter an integer number between 2 and 10000:");
scanf("%d",&k);
printf("\n\nThe prime factor(s) of %d is(are):",k);
for(j=2;j<k;j++)
if((!(k%j))&&(IsPrime(j))) 如果j是K的一个约束,并且j是素数的话,就输出到屏幕
printf(" %4d,",j);
printf("\n");
}

哪位好心的学友能解释一下这个程序?主要是加粗部分。而且质因子这个词我完全不理解,请详细讲一下,偶数学没学好。。。。。


----------------解决方案--------------------------------------------------------
谢谢各位学长!!
----------------解决方案--------------------------------------------------------