C语言 求出1-N中的所有素数 输入 大于1的正整数N 输出 1-N中的所有素数,(以从小到大的格式输出)

如题所述

测试结果:

请输入一个数N,打印1-N之间所有素数:
100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71
73 79 83 89 97

源代码:
#include "stdio.h"
#include "conio.h"
int isShuShu(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
main()
{
int i;
int n=0;
printf("请输入一个数N,打印1-N之间所有素数:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(isShuShu(i))
{
printf("%3d ",i);
}
}
getch();
}

思路:
一个函数isSHuSHU()判断给定数是否是素数
从1-N逐一排查即可
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-17
#include<stdio.h>
int fun(int num)
{
int i;
for(i=2;i<num;i++)
if(num%i==0) return 1;
return 0;
}
main()
{
int N;
int i;
scanf("%d",&N);
for(i=2;i<N;i++)
if(fun(i)==0) printf("%d\n",i);
}本回答被网友采纳
第2个回答  2012-12-13
#include<stdio.h>
#include<stdlib.h>
#define Nmax 65535
#define Nperline 5
void plotprime(int);
void main()
{
int n;
printf("输入大于1的整数N(最大%d)\n",Nmax);
scanf("%d",&n);
while(n<2&&n>Nmax)
{
printf("输入的整数不合法,请重新输入\n");
scanf("%d",&n);
}
plotprime(n);
system("pause");
}
void plotprime(int n)
{
int i,j=0;
int prime[Nmax];
int Nprime=0;
for (i=2;i<=n;i++)
{
for(j=0;j<Nprime;j++)
{if (i%(prime[j])==0) break;}
if (j==Nprime)
{
Nprime++;
prime[Nprime]=i;
printf("%d ",i);
if (Nprime%Nperline==0) printf("\n");
}
//if (i>=3) i++;
}
}
第3个回答  2012-12-13
#include<stdio.h>
void main()
{
int i,j,n;
do{
scanf("%d",&n);
}while(n<1); //保证输入的数大于1;
for(i=2;i<n;i++)
{
for(j=2;j<i/2;j++)
if(i%j==0)
break;
if(j=i/2)
printf("%d ",i);
}
system("pause");
}
第4个回答  2012-12-13
筛选法。。。
相似回答