1到100的质数c语言
A. c语言实现输出1~100内质数,求思路。谢谢!
利用循环,让这个数从2除到开根号——>for(i=2;i<=sqr(m);i++)
然后循环内判断是否能被整除,并用flag做个标记,初值flag=1——>if(m%i==0)flag=0
循环完成,即判断结束,利用标记判断是否是质数,如果是,那么flag应该还是为1——>if(flag)printf……
以上就是判断部分,那么从1~100可以在以上基础上加上外循环for(m=1;m<=100;m++)就实现从1~100依次判断了
B. 用c语言编写程序输出1-100内的素数
用常规的判素性方法可如下实现
#include "stdio.h"
#include "math.h"
bool IsPrime(int x)
{
int i, s;
s = sqrt(x + 1);
for(i = 2; i <= s; i++)
if(x % i == 0) return false;
return true;
}
void main( )
{
int i;
for(i = 2; i < 100; i++)
if(IsPrime(i))
printf("%d ", i);
}
也可采用筛选法,筛选法效率会高一些,楼上的虽然也是筛选法,但他的效率却并不高。筛选法的思路是将那些非素数筛掉,留下那些素数。命题“对于1<x<100的合数x, 必含有小于10的质因子”可以证明是真命题,它的逆反命题“对于1<x<100的数,如果不含有小于10的质因子,则它必为素数。”则也是真命题。因此筛除时,只要筛除含有10以内的质因子的数就可以了。下面给出筛选法的代码。
#include "stdio.h"
void main( )
{
bool isprime[100];
int i, j;
isprime[0] = false;
isprime[1] = false;
for(i = 2; i < 100; i++) /*先初始化2~100的都是素数,然后将非素数筛除掉*/
isprime[i] = true;
for(i = 2; i < 10; i++) /*将所有含有小于10的质因子的数筛除掉*/
{
if(isprime[i]) /*如果i是素数,则将它的倍数全部筛掉*/
for(j = i * i; j < 100; j += i) /*从i*i开始检测是因为小于i*i的合数都被小于i的素数筛除了*/
isprime[j] = false;
}
for(i = 2; i < 100; i++)
if(isprime[i])
printf("%d ", i);
}
C. 输出100以内的质数,用c语言编写
#include <stdio.h>
int main(int argc, char **argv)
{
int x;
for (x=1;x<100;x++){
int i;
int isprime=1;//表示x是素数。
for(i=2;i<x;i++){
if (x%i==0){
isprime=0;
break;
}
}
if (isprime==1){
printf("%d",x);
}
}
return 0;
}
C语言编程计算注意事项:
1、编程时注意符号大小写。
2、main函数要有返回值
3、C语言中定义数组,要定义出大小,数组的大小只能是常量不能是变量。
4、%md ; %0md ;%.mf;(以m位进行右对齐输出,不足m位空格补上;以m位进行右对齐输出。不足m位用0补上;保留m位小数)
D. C语言编程,1到100,求质数,谁能帮帮我啊,网上找的,不完整,看不懂,毫无思路
#include<stdio.h>
#include<math.h>
intf(intn)
{
inti;
//素数标准:只能被自己和1整除的数字
for(i=2;i<=sqrt(n);i++)
{
//能被其他数整除,就不是素数
if(n%i==0)
return0;
}
return1;
}
intmain()
{
inti,k=0;
printf("1至100之间的素数从小到大分别为: ");
for(i=2;i<=100;i++)
{
//依次判断所有数字是否为素数
if(f(i))
{
k++;
printf("%d ",i);
}
}
printf(" 总共%d个。 ",k);
return0;
}
E. c语言求100以内的质数
以我来看我觉得两个for循环都有问题。
首先第一个for循环应该错了。应该是i < 100。因为是求100以内的,所以要循环到100。
这个程序就是利用for循环让i从2遍历到99.然后利用j找出了1和本身之外i的因数。
那么第二个for循环问题就来了,我们寻找i的因数的时候,并不需要从2一直找到i本身,只要找到i的一半就可以停止了。举个简单例子,比如我们要找98的因数,那么我们只需要找到98÷2 = 49就行了,因为49之后的数字是肯定不能整除98的。同理大于i/2之后的数字是肯定不能够整除i的。所以第二个for的条件应该是j <= (i/2)而不是j。下面就简单了。如果j是i的因数,那么i%j=0. 就直接continue(顺便提一句这里是不能用break的,因为break是直接跳出了for循环,相当于直接结束了整个for循环,而此时还没有遍历到100的,应该用continue,continue就是结束当前循环并且执行i++继续下一轮循环)继续循环而不用执行print语句(这个时候代表i不是质数,因为除了1和它本身还有j这个因数。)。同理,如果从2到i/2都没有i的因数,那么就说明i没有其他因数,也就是质数了,所以print输出i。
另外补充一下:
i/j是求i除以j的商,比如11 / 3 = 3; 6 / 3 = 2
i%j是求i除以j的余,比如11 % 3 = 2; 6 % 3 = 0。
F. C语言 输出1到100之间的全部素数
有三种方法:
1、输出1-100以内的素数:
(6)1到100的质数c语言扩展阅读:
在这个小程序中主要用到的是for循环
for 循环语句的一般形式为:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
需要注意的两点:
1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
2)for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。
因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于 for 循环了。