编一程序:输出所有小于等于n(n为一个大于2的正整数)的素数

c语言。
2025-02-24 05:35:43
推荐回答(5个)
回答1:

#include
#include
int prime(int x) /*判断正整数x是否为素数*/
{

} int i; for (i=2;i<(int)sqrt(x);i++) if (x%i==0) return 0; return 1; /*若x不是素数,则退出并返回0*/
void main()
{
int n,i,j=0;
/*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"); /*每行最多显示10个素数*/
printf("\n");
}

回答2:

#include
using namespace std;

void main() //筛法求素数
{
long i, j, k = 0;
int max_num;
unsigned char *p_sieve;
cout << "please input the max_num" << endl;
cin >> max_num;
p_sieve = new unsigned char[max_num+1];
if (p_sieve == NULL)
{
cout << "Error! Exit!" << endl;
exit(1);
}
else
{
for (i = 2; i <= max_num+1; i++) //将所有数都放入筛子中
{
p_sieve[i] = 1;
}
cout << "primes from 1 to " << max_num << ":" << endl; //提示即将输出素数
for (i = 2; i <= max_num; i++)
{
if (p_sieve[i] == 1) //如果i在筛子里,也即i是素数
{
k++;
cout.width(4);
cout << i; //或者cout << setw(4) << i;另外加上去的,控制输出域宽的见第八章输入输出流
if (k % 15 == 0)
{
cout << '\n';
k = 0;
}
for (j = i * i; j <= max_num; j += i) //将素数i的倍数取出
{
p_sieve[j] = 0;
}
}
}
}
cout << endl;
}
//转载

回答3:

int i, j,n;
for(i=3;i{ for(j=2;j {
if ((i%j)==0 ) break;
}
if (i==j) printf("%d, ",i);
}
别把 2忘了

回答4:

#include
#include
main()
{
int n,t,i,j;
for(;;)
{
system("cls");
printf("请输入素数的取值范围:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
t=0;
for(j=2;j {
if((i%j)==0)
t=1;
}
if(t==0)
printf("%d ",i);
}
system("pause");

}
}

==================================================================MR_computer

回答5:

#include
int main()
{
int n,i,j;
printf("enter a int>2:");
scanf("%d",&n);
for(j=n;j>1;j--)
{
for(i=0;i<=n/2;i++)
if(j % i==0) break;
if(i>n/2)
printf("%d",j);
}
return 0;
}