linux 编写程序求出100以内质数

linux 编写程序求出100以内质数,第1张

#include <stdio.h>

int main()

{

for(int i=2i<=100i++)/*确定范围:2——100*/

{

for(int k=2k<ik++)

{

if(i%k==0)break/*如果找到一个不是1或者它本身的因子,则停止该循环,此时k<i*/

}

if(k==i)printf("%d\n",i)/*当k=i时表明i不存在除1和本身以外因子,因而它是素数,打出来*/

}

}

【答】程序清单如下:L0.2 prime.sh#!/bin/bash## SCRIPT: prime.sh# AUTHOR: Zhaing&Bo# DATE: 2010-11-21# REV:1.1.A## PLATFORM: Linularis## PURPOSE: Read a number from the console, then print all the primes# in (1~100). And at the same time calculate the sum of all# the primes.## set -n # Uncomment to check your syntax, without execution.# # NOTE: Do not forget to put the comment back in or# # the shell script will not execute!# set -x # Uncomment to debug this shell script (Bash only)# ##################################################################### DEFINE FILES AND VARIABLES HERE ########################################################################num=0 # 用来暂存用户输入整数i=0# 循环控制变量(控制is_prime函数中的循环次数)N=0# 待测值(is_prime函数形参)n=0# 主函数循环控制变量(is_prime函数实参)flag=1 # 素数表示(其中 1 表示是,0 表示否)sum=0 # 用来存储素数之和######################################################################### DEFINE FUNCTIONS HERE ###############################################################################/**# * 函数名称:is_prime()# * 函数功能:测试一个数是否为素数# */function is_prime() { N=$1 flag=1 for ((i=2i<(N/2+1)i++)) { ((N%i)) if [ $? -ne 0 ]then flag=0break fi }}########################################################################## BEGINNING OF MAIN ################################################################################## 输出提示read -p "Please input a postive integer:" num#echo -e "\nYour Number is: $num.\n"# 将用户输入输出,以便用户确定echo -e "All the prime from 1 to $num: "for ((n=2n<=$numn++)) { is_prime n if [ $flag -eq 1 ]then echo -n "$n " ((sum=sum+n))# echo -e "$n Is prime."# else# echo -e "$n is Not prime.\n" fi}# 输出所有素数的和(1~num)echo -e "\nThe SUM of all the primes is: $sum.\n"# End of script 【至此结束】【说明】您好!脚本如上所示,我只在Fedora13下进行过测试,没有问题;但,别的Linux平台我不敢保证程序能够正常运行。注意,其中汉语注释在Linux下可能显示乱码,本人不再为此提供技术支持。另外,这也是我写的第一个脚本。程序可能不是最好的,有什么问题请留言。【建议】这类小脚本并不是很难,多查查书,google一下基础概念;自己就能写出来的。

判断素数的原理是:

素数是只能被1和本身整除的数。例如 3只能被1和3整除,17只能被1和17整除等等,想9就不是素数(能被1,3,9整除)。

编程的算法是:

穷举法,就是将需要判断的数除2、除3....一直除到这个数减1.

例如:判断7是不是素数的算法是进行如下运算 7/2,7/3,7/4,7/5,7/6,在上述除的过程中如果都不能被除尽则可以断定7是素数,否则就说明7不是素数。

注意:编程时使用求余运算,判断是否能被除尽。

参考程序如下:

dim i as integer

dim j as integer

dim x as integer

x=val(inputbox("请输入一个自然数:","输入提示"))

for i=2 to x-1

if x mod i=0 then exit for

next i

if i=x then '此处若i的值变为x则说明所以上面的循环全被执行完

print x &"是素数"

else

print x &"不是素数" '若i<x则说明循环的中途x就能被除尽了

endif

当然程序还可以被优化,例如不一定非除到n-1,完全可以除到根号下n,

举例一:判断25是不是素数的话,只需要除到5即可

举例二:对于开根后是小数的可以取整,如判断15是不是素数只需要除到3即可。

简化后的程序运行速度会更快的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8472631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存