编写程序,用筛选法求出100以内的素数并打印输出。要求:程序中判断某数是否为素数写成函数形式。
你题目的解答代码如下:
#include <stdio.h>
int isprime( int n);
int main()
{
int i;
for( i=1; i<=100; i++ ) {
if(isprime(i)){
printf("%d ", i);
}
}
return 0;
}
int isprime(int n)
{
int i;
if(n<=3) return n>1;
for(i=2;i*i<=n;i++)
if(n%i==0) return 0;
return 1;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
#include <stdio.h>
#include <math.h>
int main()
{
int flag = 1;
for(int i =2;i <= 100;i++){ //循环遍历到100
for(int j = 2; j < i ;j++){//比较到根号它本身
if(i % j==0){
flag = 0;
break;
}
}
if(flag){
printf("%d\t",i);
}else{
flag = 1;
}
}
return 0;
}
#include<stdio.h>
bool isprime(int n)
{
if(n<4) return n>1;
if(n%2==0||n%3==0) return n<1;
for(int i=4;i*i<=n;i++)
if(n%i==0) return n<1;
return n>1;
}
int main()
{
for(int i=1;i<=100;i++){
if (isprime(i))
printf("%d ",i);
}
return 0;
}
C99标准的编译器,可支持变长数组。已经改成数组形式了,没有用一个*(指针)
#include<stdio.h>
#include<stdlib.h>
//本函数可以求任何范围内的素数,当然肯定也能求1到100之间的素数了
//筛选法求素数
int isprime(int min ,int max,int out[])
{
if(min<1 || max<1 || min<1 || max<1)return -1;
int max1= (max>min) ? max : min;
//防止参数大小顺序输入倒置
int min1= (min<max) ? min : max;
int len=max1-min1+1;
//原序列个数
int n=0;
//素数个数
int i=0,j=0;
int prime[max1];
//把1到max1序列存入内存区
printf("\n");
for(i=0;i<max1;i++)
{
prime[i]=i+1;
if(prime[i]>=min1)
printf("%d ",prime[i]);
// if((i+1)%10==0)printf("\n");
}
puts("\n");
//1不是素数赋值0
prime[0]=0;
//遍历每一个数,后面所有数若能整除当前数则把被除数所在的内存赋值0
for(i=0;i<max1-1;i++)
{
for(j=i+1;j<max1;j++)
{
if( prime[j]!=0 && prime[i]!=0 )
{
if( prime[j]%prime[i]==0)
{
//把不是素数的数均赋值为0
prime[j]=0;
}
}
}
}
//printf("\n筛选法求出min1到max1范围内的素数:\n");
for (i =min1-1 ;i < max1;i++)
{
//数组中不为0的数即为素数
printf("%d ",prime[i]);
n++;
}
puts("\n");
for (i=min1-1,j=0;i<max1;i++)
{
//数组中不为0的数即为素数
if(prime[i] != 0)
{
out[j++]=prime[i];
}
}
out[j]=0;
//0作为结束标记
return 0;
}
int main(){
int min,max;
int i=0;
printf("输入范围\n");
printf("最小值:");
scanf("%d",&min);
printf("最大值:");
scanf(" %d",&max);
int out[max-min+2];
isprime(min ,max,out);
printf("\n%d到%d范围内所有素数为:\n",min,max);
while(out[i]!=0)
{
printf("%d ",out[i++]);
if(i%10==0)printf("\n");
}
return 0;
}