用筛法:
package foo;
public class TFoo {
public TFoo() {
Systemoutprintln("TFoo Created!");
}
public static void main(String[] args) {
TFoo tfoo = new TFoo();
int i,j,sum;
int a[]=new int[101];
sum = 0;
for (i = 1; i <= 100; i++) //先元素初值设为对应的序号值
a[i] = i;
a[1] = 0; //1不是素数,先排除
for (i = 1; i <= 100; i++) {
if (a[i] == 0)
continue; //已标记为0的表示不是素数,可以排除作为被除数
for (j = i + 1; j <= 100; j++)
if (a[j] == 0)
continue; //已标记为0的,可以排除作为除数
else
if (a[j] % i == 0) //判断能否被整除,如可以标记为0,即非素数
a[j] = 0;
}
prt("100以内的素数有:\n");
for (i = 1; i <= 100; i++)
if (a[i] != 0)
{
Systemoutprintln(i);
sum = sum +i;
}
prt("\n");
Systemoutprintln(sum);
}
static void prt(String s) {
Systemoutprintln(s);
}
}
================================
精巧算法:
package foo;
public class TFoo {
public TFoo() {
}
public static void main(String[] args) {
TFoo tfoo = new TFoo();
boolean isSuShu ; // isSuShu用于辨别该数是否为素数
int sum=0;
for (int i=2 ; i<100 ; i++)
{
isSuShu = true ; // 先假设i为素数,初始化isSuShu为true
for (int j=2 ;j <= i/2 ; j++)
{
/在2到i/2内检查是否有能整除i的数,即i的约数。有的话就说明这是一个合数,跳过。/
/不必从2一直检验到i,因为只要2到i/2内有能整除i的数,即i的约数,那么i/2到i内一定
也有这样一个约数,和2到i/2内那个约数乘起来等于i。也就是说,假如i有约数,
那么一定有一个是不大于i/2 /
if (i%j == 0 ) //i%j表示i/j的余数为0
{
isSuShu = false ; //假如i/j的余数为0,那么i是合数,跳过
break;
}
}
if (isSuShu == true )
{ //假如i没有被判断为合数,它就是素数
Systemoutprint(i+"\t"); //"\t"是制表符,让结果显示更好看
sum = sum+i;
}
}
Systemoutprintln("100以内的素数之和为:");
Systemoutprintln(sum);
}
}
int sum=0;
Systemoutprintln("1—100内的素数有:");
for(int i=1;i<=100;i++){
boolean flag=true;
for(int j=2;j<=i/2;j++){
if(i%j==0){
flag=false;
break;
}
}
if(flag){
Systemoutprint("\t"+i);
sum+=i;
}
}
Systemoutprint("他们的和是:"+sum);
程序如下:
<script language=javascript>
function chk(x){
for (var i=2;i<=x/2;i++) if (x%i==0) return 0;
return 1;
}
for (var i=2;i<1000;i++) if(chk(i)) documentwriteln(i,' ');
</script>
结果如下:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103
107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211
223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331
337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449
457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587
593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709
719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853
857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991
997
程序确保正确运行。
public class Shushuo { public static void main(String args[]) { int MM = IntegerparseInt(args[0]); int SIDE = MM/5; int primeNo[]= new int[SIDE]; int i,j,k,n; primeNo[0]=3; n=1; i=1; j=3; do { k=0; while(k<n&&(j%primeNo[k]!=0)) { k++; } if(k==n) { primeNo[i]=j; i++; n++; } j+=2; } while(j<1000); / Systemoutprintln("all prime number between 2--"+MM+"are: "); for(int l=n-10;l<=n-1;l++) { Systemoutprintln(primeNo[l]); }/ int sum=0; for(int m=n-10;m<n-1;m++) { sum=sum+primeNo[m]; } Systemoutprintln(sum); Systemoutprintln(); // Systemoutprintln("the totle number is: "+n); } }
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。下面是一个java求100之内的素数简单示例。
public class test {
public static void main(String[] args) {
int i,n,k=0;
for (n = 3; n<=100; n++) { //3~100的所有数
i=2;
while (i<n) {
if (n%i==0) break; //若能整除说明n不是素数,跳出当前循环
i++;
}
if (i==n) { //如果i==n则说明n不能被2~n-1整除,是素数
k++; //统计输出数的个数
Systemoutprint(i+ "\t ");
if (k %6==0) //每输出5个则换行
Systemoutprintln();
}
}
}
}
原理:用一个数除以,除它本身和1以外的所有数,都不能整除;
public static void main(String args[])
{
int i, j; //声明变量i,j;
int sum=0; //声明sum初始值为0;
for (i = 2; i <= 100; i++) //1至100的数,被除数
{
for (j = 2; j <i; j++) //除数
{
if (i % j == 0) {
break; //如果余数为0这跳出if跳到第一个for循环,再次执行
}
if (j >=(i-1)) //满足第一个if并满足第二个if则输出i的值
{ sum=sum+i; //所有素数相加;
Systemoutprintln(i);//输出i的值
}
}
Systemoutprintln("所有素数何为"+sum);
}
}
以上就是关于用java程序编程2到100之间所有素数之和,急啊,在线等答案全部的内容,包括:用java程序编程2到100之间所有素数之和,急啊,在线等答案、编写一个JAVA应用程序,输出100以内的全部素数及其和。、用Java编写一个求1000以内所有素数和的小程序,求大神帮忙,在线等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)