c语言1到100的素数
1. 用c语言编1到100之间的素数程序
//1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
//2.程序源代码:
#include
"stdio.h"
#include
"math.h"
main()
{
int
m,i,k,h=0,leap=1;
printf("\n");
for(m=1;m<=100;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nthe
total
is
%d",h);
return
0;
}
2. c语言求1到100的素数
这题用数组做挺复杂的,首先你要把1到100的数放进去吧,然后还要用数组下标输出,很麻烦。
可以用简单的方法你参考下:(判断一个数是不是质数,把这个数与2和它自己(包括)之间的数相除,如果有能整除且不是自己则不是质数,如果是自身则是质数)你的思路是开平方根我们思路是相同的只是运用的数学原理不同而已。
int main()
{int i=0;int j=0;
for(i=2;i<100;i++)
{for(j=2;j<=i;j++)
{ if(i%j==0);
if(i==j)
printf("%8d",i)
}
}
}
3. 用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;
}
(3)c语言1到100的素数扩展阅读
C语言判断素数
#include<stdio.h>
intmain()
{
inti,j;
intm,n,p;
for(i=11;i<1000;i++)
{
if(i>=11&&i<=99)
{
m=i%10;
n=i/10;
}
else
{
m=i/100;
n=i%10;
}
if(m==n)
{
for(j=2;j<i/2;j++)
if(i%j==0)
break;
if(j>=i/2)
{
printf("%d",i);
}
}
}
return0;
}
4. C语言求1到100的素数
除了2,所有素数都是奇数,所以只考查>2的奇数;奇数肯定不能被偶数尽除,所以除数也只用奇数,且用j*j<=i这种形式控制循环,避免开方计算。
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
inti,j,k;
printf(": 2");
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(" ");
return0;
}
5. c语言编1到100素数
没错,它是,只不过不太好理解
j是从2开始从小到大枚举的,也就是说j一定是i最小的因数
比如,99最小的因数是3,那么当i=99时,j=3
一个合数最小的因数(1除外)的平方必定小于这个数
例如:99最小的因数是3,3*3<99
9最小的因数是3,3*3=9
7最小的因数就是7,7*7>7,所以7是质数
不知你明白没有
不过这个if(j*j>i)确实不太好理解,建议改成if(j==i),效果完全一样
6. 用C语言编1到100之间的素数程序
程序及解释如下:
首先判断素数的算法:用一个数分别去除以2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
则有如下程序
{ int m,k,i;
for(m=1;m<=100;m=m+2) //m=m+2,因为偶数都不是素数,不用考虑,所以每次m+2.
{ k=sqrt(m) //先求这个数的平方跟
for(i=2;i<=k;i++) //然后用i(从2到k,即m的平方跟)去除m,
if(m%i==0) break; //如果能被整除, 则不是素数,break
if(i>=k+1) pritnf("%d",m); //如果i>k+1,则说明没有数能整除m.则m是素数
}
}
(6)c语言1到100的素数扩展阅读:
素数被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。
在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。
在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的质数次数的使用也得到了证明。实验表明,质数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。
以质数形式无规律变化的导弹和鱼雷可以使敌人不易拦截。
多数生物的生命周期也是质数(单位为年),这样可以最大程度地减少碰见天敌的机会。
参考资料:网络 素数
7. 用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);
}
8. 编C语言程序求自然数1~100的全部素数。
#include"stdio.h"
const
int
n=100;
int
fun(int
n)
{
int
i;
for
(i=2;i
if
(n%i==0)
return
0;
return
1;
}
void
main()
{
int
i;
for(i=1;i
{
if(fun(i*(i+1)-1))
printf("%d\t",i);
}
}
这里n设为100就是求100以内的这种自然数,你看看是否可以。
9. 用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
(9)c语言1到100的素数扩展阅读:
方法二、使用函数:
Action()
{
int i;
int sum=0;
for(i=2;i<=100;i++){
if(isPrime(i)){
sum+=i;
}
}
lr_output_message("素数之和sum=%d",sum);//loadrunner的输出,其他编译器可能是printf
return 0;
}
int isPrime(a){
int j;
int flag=1;
for(j=2;j<=a-1;j++){
if(a%j==0){
flag=0;
break;
}
}
return flag;
}
10. c语言输出1-100素数
不能只看程序,还得看数学定义, 素数是从2开始,1不必计算。
for(m=2;m<=100;m++){
if(m==2||m==3){//2比较特殊,是素数,如果用sqrt()来减少判断次数的话,3放在这里
printf("%d ",m);
continue;
}
if(m%2==0)continue;//只要是偶数,都不是素数
k=sqrt(m);
for(i=2;i<=k;i++){
if(m%i==0){
break;
}
}
if(i==(k+1))//改为k+1
printf("%d ",m);
}
这样应该就对了。