输入正整数n,输出小于n的质数。请问大家这个程序错在哪里?

#include<stdio.h>
#include<math.h>
int main()
{
	int i,j,m,n,k;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		k=int(sqrt(i));
		for(j=2;j<k;j++)
		if(i%j==0) break;
		if(j>k) printf("%d\n",i);
		else break;	
	}
	return 0;
}


ERRER
浏览 2547回答 4
4回答

葛zc

        if(j>k) printf("%d\n",i);        else break; 这代码的意思是如果i是素数,输出i,不是的话跳出for(i=1;i<=n;i++)这循环所以错了,应该去掉 else break; 

慕少1414285

#include<stdio.h>#include<math.h>int prime(int x){ int i; for(i=2;i<=(int)sqrt(x);i++) if(x%i==0) return 0; return 1;}void main(){ int n,i,j; printf("n="); scanf("%d",&n); printf("小于等于%d的素数\n",n); if(n>2){ printf("%4d",2); j++; } for(i=3;i<=n;i+=2) if(prime(i)==1){ printf("%4d",i); if(j!=0 && ++j%10==0) printf("\n"); } printf("\n");}

慕少1414285

首先强制转换时这样用的:k=(int)sqrt(i);

慕尼黑1170528

#include<stdio.h> #include<math.h> int main() {     int i,j,m,n,k;     int flag;     scanf("%d",&n);     for(i=2;i<=n;i++)     {         flag = 1;         k=int(sqrt(i));         for(j=2;j<=k;j++) {             if(i%j==0) {                 flag = 0;                 break;             }         }         if (flag) {             printf("%d\n", i);         }     }     return 0; }你都没有想明白你的逻辑怎么来的
打开App,查看更多内容
随时随地看视频慕课网APP