C语言求1到100的素数

我们刚学C不久,老师叫做个这个,我写的是
#include <stdio.h>
int isprime(int n){
int m;
for(m=2;m*m<=n;++m){
if(n%m==0)
return 0;
else
printf("%d ",n);}
}
int main(){
int n;
for(n=1;n<=100;++n){
isprime(n);
}
getch();

return 0;

}

结果输出的结果第一不全是素数,第二有好多数重复。不知道怎么改,求助高手。
别讲或者改太复杂啊,我们刚学没多久,谢谢

除了2,所有素数都是奇数,所以只考查>2的奇数;奇数肯定不能被偶数尽除,所以除数也只用奇数,且用j*j<=i这种形式控制循环,避免开方计算。
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    int i,j,k;
    printf("Prime Numbers between 1 to 100 are as follows:\n2 ");
    for(i=3;i<100;i+=2){//除了2只考查奇数,避免穷举
        for(j=3;(k=j*j)<=i;j+=2)//只用奇数去除,且j*j<=i限制循环以提高时效
            if(i%j==0) break;
        if(k>i)
            printf("%d ",i);
    }
    printf("\n");
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-26
我给你讲讲原理吧,1到100这100个数.①,偶数一定不是素数,所以素数在3,5,7,..99中选②假设s是那个范围奇数,让s分别除以2,3,4,...s-1,如果都不能整出则s是素数至于代码就如1楼所写
第2个回答  2011-11-30
#include <stdio.h>
#include<math.h>
int isprime(int n){
int m;
for(m=2;m<=sqrt(n);++m){
if(n%m==0)
return 0;
}
printf("%d ",n);
}
int main(){
int n;
for(n=2;n<=100;++n){
isprime(n);
}

return 0;

}
在你的基础上改的,不明白可以hi我,在线给你讲一下本回答被提问者采纳
第3个回答  2011-11-30
#include <stdio.h>
#include <math.h>
int ss(int n) /*检查n是否为素数,如果是则返回1,否则返回0*/
{
int i;
if(n<2) return 0;
for (i=2; i<=(int)sqrt((double)n); i++)
if (n%i==0) return 0;
return 1;
}
int main(void)
{
int i,j=0;
for (i=1; i<=100; i++)
if(ss(i))
{
j++;
printf("%5d",i);
if (j%6==0) printf("\n");
}
printf("\ntotal prime=%d\n",j);
return 0;
}
第4个回答  2011-11-30
using System;
class Prime
{
static void Main()
{
int sum = 1;
Console.Write(2 + " ");
for(int m=3;m<=100;m+=2)
{
bool a = true;
if(m%2==0)
{
a = false;
}
else
{
for(int i=3;i<m/2;i+=2)
{
if(m%i==0)
{
a = false;
break;
}
}
}
if(a==true)
{
sum++;
Console.Write(m.ToString()+" ");
}
}
Console.WriteLine();
Console.WriteLine("total:" + sum);
}
}

c语言怎么输出1到100的素数?
1、输出1-100以内的素数:2、同样,也是输出1-100以内的素数,这个构造一个数组,将其所有元素初始化为1,表示素数,这时取x从2开始,到100以内做循环。若x为素数,即prime[x]!=0,使得每个i*x位置元素置0(prime[i*x]=0),表示为非素数,循环结束前x+1。3、该方法是输出100个素数,基本...

C语言 输出1到100之间的全部素数?
要实现C语言输出1到100之间的所有素数,有三种方法可供选择:首先,你可以采用一种直观的遍历方法,从2开始,对每个数x进行检查。初始化一个数组,所有元素设为1,表示为素数。接着,对于每个x,如果它是个素数(即数组prime[x]不为0),将其所有倍数位置(prime[i*x])设为0,表示为非素数。这个...

用c语言:输出在1~100内的所有素数
include<stdio.h> include<math.h> intmain(){ intn;inti;intflag=0;for(n=2;n<=100;n++){ flag=0;for(i=2;i<=sqrt(n);i++){ if(n%i==0){ flag=1;break;} } if(flag==0)printf("%d",n);} return0;}

c语言,输出1-100之间的所有素数,运用自定义函数!用循环来写。_百度知...
printf ("1 ~ 100 的素数:\\n");for (i = 1; i <= 100; ++i){if (is_prime(i)){printf ("%d\\n", i);}} return 0;}运行:

用C语言求解1-100之间的所有素数。
Action(){ int i,j;int sum=0;int flag;\/\/是否为素数 for(i=2;i<=100;i++){ flag=1;for(j=2;j<=i-1;j++){ if(i%j==0){ flag=0;break;} } if(flag==1){ sum+=i;} } lr_output_message("sum=%d",sum);return 0;} 输出的结果:sum=1060 ...

C语言求100以内素数
在C语言中,要找出100以内的素数,我们可以稍微调整代码结构。首先,我们需要明确,这里的素数是只有1和本身两个正因数的自然数。下面是优化过的代码片段:c include void main() { int i, j, is_prime; \/\/ 用is_prime替换t来表示当前数是否为素数 for (i = 2; i <= 100; i++) { \/\/ ...

用C语言输出1到100内所有的素数
include<stdio.h> bool isprime(int x){ for(int i=2;i*i<=x;i++)if(x%i==0) return false;return true;} int main(){ printf("1~100的素数有:\\n");for(int i=2;i<=100;i++)if(isprime(i)==true) printf("%d ",i);} ...

c语言程序设计实验 输出1到100之间的素数。
int main(){ int i, j; for (i = 2; i < 100; ++i){\/\/2-100控制循环 \/\/判断素数 for (j = 2; j*j <= i; ++j){\/\/2-sqrt(i)循环控制 if (i % j == 0)break;\/\/如果能整除,说明不是素数,跳出循环 } if (j*j > i){\/\/如果没有能整除的数...

C语言编程,1到100,求质数,谁能帮帮我啊,网上找的,不完整,看不懂,毫无...
return 0; } return 1;}int main(){ int i,k=0; printf("1至100之间的素数从小到大分别为:\\n"); for(i=2;i<=100;i++) { \/\/依次判断所有数字是否为素数 if(f(i)) { k++; printf("%d\\t",i); } } printf("\\n总共%d个。\\n",k ); return 0;} ...

用c 求100以内的素数
在C语言中,求取100以内的素数是一个常见的编程题目。下面,我将为您详细介绍如何实现这个任务。首先,我们需要了解素数的定义。素数是一个只有1和它本身两个正除数的自然数。例如,2、3、5、7、11、13等都是素数。实现过程如下:1. 使用一个循环结构(for循环)从2开始遍历到100(包括100),遍历...

相似回答