C语言 一个数包含的所有质数int main(int argc,char* argv[]){ int n,i,j,f,a[N],m,leap;leap=1;f=0;printf("please input a even\n");scanf("%d",&n);if (n%2!=0){printf("error");}for(i=2;i

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 14:14:07
C语言 一个数包含的所有质数int main(int argc,char* argv[]){ int n,i,j,f,a[N],m,leap;leap=1;f=0;printf(

C语言 一个数包含的所有质数int main(int argc,char* argv[]){ int n,i,j,f,a[N],m,leap;leap=1;f=0;printf("please input a even\n");scanf("%d",&n);if (n%2!=0){printf("error");}for(i=2;i
C语言 一个数包含的所有质数
int main(int argc,char* argv[])
{ int n,i,j,f,a[N],m,leap;
leap=1;f=0;
printf("please input a even\n");
scanf("%d",&n);
if (n%2!=0)
{
printf("error");
}
for(i=2;i

C语言 一个数包含的所有质数int main(int argc,char* argv[]){ int n,i,j,f,a[N],m,leap;leap=1;f=0;printf("please input a even\n");scanf("%d",&n);if (n%2!=0){printf("error");}for(i=2;i
找到问题了,下面这个地方:
for(j=0;j

在两个for循环之间,要把leap重新设置为1,否则一旦leap = 0,它就再也不会变成1了,所以后面那个判断if (leap)始终也不再进去。

都不知道你是在求什么。。。按你题目意思是相当于求一个数的所有的质因数
for(i=2;i {
for(j=2;j {
if(i%j==0)
{leap=0;
break;
}
}这部分你在求什么啊。。。你是求n的所有质数啊。这样写,不管你输多少。出来...

全部展开

都不知道你是在求什么。。。按你题目意思是相当于求一个数的所有的质因数
for(i=2;i {
for(j=2;j {
if(i%j==0)
{leap=0;
break;
}
}这部分你在求什么啊。。。你是求n的所有质数啊。这样写,不管你输多少。出来都是2,3。先把思路捋下。。。把我写的一个求质数的你参考下
#include
int main()
{
int n,i;
printf("please input a even\n");
scanf("%d",&n);
for(i=2;i while(n!=i)
{ if(n%i==0)
{
printf("%2d",i);
n=n/i;
}
else
break;
}
printf("%2d",n);
}
希望对你有帮助 #include
main()
{ int i,j,a,sum=0,z;
scanf("%d",&i);
for( a=2;a<=i;a++)
{
for(j=2;j<=sqrt(a);j++) // 因为如果一个数不是素数那么它是两个数的乘积。
//这两个数一定有一个小于等于sqrt(),因此只要找较小的因子就可以了
/* 判断i是不是素数*/
{
if(a%j==0 ) /*这是for (j=2;j<=sqrt(a);j++)的循环体,通过这个循环改变J的值 */
break;
}
if( j>sqrt(a) ) // 如果j>sqrt(a)说明除1和它本身外没有其它数被 i 整除,
{ //所以是素数。在2至sqrt(a)如果有整除的数,执行 if (a%j==0) break;语句,j<=sqrt(a),所以不是素数。
printf("%5d",a);//所有质数
}
}
return 0;
}

收起