编程,在屏幕上输出2~n间所有的素数,n从键盘上输出,但以下的程序不知错在哪,求解?
#include<stdio.h>
int main()
{
int n;
printf("请输入一个整数n:");
scanf("%d",&n);
int x,y;
int flag;
for(x=2;x<=n;x++)
{
flag=1;
for(y=2;y<x;y++)
{
if(x%y==0)
flag=0;
}
if(1==flag)
printf("5%d",x);
}
}
[解决办法]
bool isPrime(int number)// 求素数
{
int i;
int k;
k = (int)sqrt((double)number); // 用平方根,而非用number/2,相对提高速度sqrt(number)/2倍
for(i = 2; i <= k; i++)
{
if(number%i==0)
break;
}
if (i > k) return true;// 没有找到可以整除的除数,被除数是 prime number
else return false;
}
printf("5%d",x);
//换成这个,程序没发现什么问题
printf("%d ",x);
你这这nb啊,这程序写的
#include<stdio.h>
int main()
{
int n;
int x,y;
int flag;
printf("请输入一个整数n:");
scanf("%d",&n);
for(x=2;x<=n;x++)
{
flag=1;
for(y=2;y<x;y++)
{
if(x%y==0)
flag=0;
}
if(1==flag)
printf("%5d\n",x);
}
}
#include <stdio.h>
int main()
{
int n;
int x, y;
int flag;
printf("请输入一个整数n: ");
scanf("%d", &n);
for (x = 2; x <= n; x++) {
flag = 1;
for (y = 2; y < x; y++) {
if (x % y == 0) {
flag = 0;
break;
}
}
if (1 == flag)
printf("%5d\n", x);
}
}
请输入一个整数n: 10
2
3
5
7