C语言编程题:求100-200之间所有素数(只能被1和自身整除的数)怎么做?

如题所述

#include <stdio.h>

int isPrime(int n) {
int i,flag = 1;
if(n < 2) return 0;
for(i = 2; i * i <= n && flag; ++i)
flag = n % i;
return flag;
}

int main() {
int num,cnt = 0;
printf("100 -- 200之间的素数有:\n");
for(num = 100; num <= 200; ++num) {
if(isPrime(num)) {
if(cnt && cnt % 10 == 0) printf("\n");
printf("%d ",num);
++cnt;
}
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-17
#include<stdio.h>
#include<math.h>
main()
{
int m,i,k,n=0;
for(m=101;m<=200;m=m+2) //偶数除外,故+2
{
k=sqrt(m); //开方
for(i=2;i<=k;i++) //在2与K之间又1数可以被M整除,则非素数
if(m%i==0)break;
if(i>=k+1)
{
printf(“%d”,m); //输出该素数
n=n+1;
}
if(n%n==0)printf(“\n”);
}
printf(“\n”);
}
第2个回答  2008-05-20
绝对正确
#include"stdio.h"
main()
{int i,j;
for(i=100;i<=200;i++)
{ for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i) printf("%d是素数",i);
}
}
第3个回答  2008-05-17
#include<stdio.h>

void main()
{
printf("100到200之间的素数是:\n");
int i,j,k=0;
for(i=100;i<=200;i++)
{
j=2;
while(i%j!=0)
j++;
if(i==j)
{
printf("%d\t",i);
k++;
if(k%5==0)
printf("\n");
}

}
printf("\n");
}
第4个回答  2008-05-17
#include <stdio.h>
#include <math.h>

bool isprime(int n)
{
if (n==2)
return true;
if (n%2==0||n<2)
return false;
int tmp=(int)sqrt((double)n);
for (int i=3;i<=tmp;i+=2)
{
if (n%i==0)
return false;
}
return true;
}

int main()
{
for (int i=100; i<201; i++)
{
if (isprime(i))
printf("%d ",i);
}
return 0;
}