这是使用该语句计算从2到1000的所有素数的一段代码,数字n是素数iff:
在第一个版本中,我认为我正确地实现了算法:
public class Giuga {
public static void main(String[] args){
int n = 2;
while(n<=1000){
int k = 1;
long sum = 0;
while(k<=n-1){
sum = sum+(long)Math.pow((double)k,(double)n-1);
k++;
}
if(sum%n==n-1){
System.out.println(n + " is a prime.");
}
n++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于变量sum快速增长,发生溢出,在素数17之后将不再有输出.
为了防止我必须使用这个:
好吧,我做到了,这是我的2.版本:
public class Giuga {
public static void main(String[] args){
int n = 2;
while(n<=1000){
int k = 1;
long sum = 0;
while(k<=n-1){
sum = sum+((long)Math.pow((double)k%n,(double)n-1))%n; //Here are the changes
k++;
}
if(sum%n==n-1){ …Run Code Online (Sandbox Code Playgroud) (1)
#include <stdio.h>
#include <stdlib.h>
int a = 10, b = 20 , c = 30, d, e, *pa, *pb, *pc;
d= 10;
e= 100;
pa = &a;
pb = &b;
int main()
{
printf("%i, %i, %i, %i", pa, pb, d, e);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(2)
#include <stdio.h>
#include <stdlib.h>
int a = 10, b = 20 , c = 30, d, e, *pa, *pb, *pc;
d= 10;
e= 100;
int main()
{
pa = &a;
pb = &b;
printf("%i, …Run Code Online (Sandbox Code Playgroud)